2.映射中的参数

Smile_slime_47
1
2
3
<select id="selectPerson" parameterType="int" resultType="hashmap">
SELECT * FROM PERSON WHERE ID = #{id}
</select>

#{id}告诉Mybatis从接口方法上获取一个叫做id的参数,而parameterType="int"则说明这个参数是一个int类型的数据,关于Select元素的属性在官网文档上有具体说明。

  • 关于parameterType在官网的说明中提到:这个属性是可选的,因为 MyBatis 可以根据语句中实际传入的参数计算出应该使用的类型处理器(TypeHandler),因此实际上不配置这个属性,#{xxx}参数也可以正常工作
  • 如果传入方法的参数是一个实体类,比如“User”,实际上参数也仍然可以继续写作#{id},Mybatis会自动在类里面寻找叫做id的同名字段
  • 如果传入方法的参数是一个map,Mybatis会自动在map里调用get(id)来获取对应的值,此时map的数据可能是map.put("id",2)

多参数方法


如果传入方法的参数是多参数的,如public User findUser(int id,String username),则需要在参数前面加入@Param("参数名")注解,下面是一个示例

1
2
//UserDao
public User findUser(@Param("id")int id,@Param("username")String username)
1
2
3
<select id="findUser" resultType="User">
SELECT * FROM PERSON WHERE ID = #{id} AND username=#{username}
</select>

如果不加注解的话,在XML中多参数只能用#{argN-1}...#{arg0}或者#{param1}...#{paramN}的形式来映射

Comments
On this page
2.映射中的参数