Java -- MyBatis学习笔记6、参数传递
1、parameterType
接口中方法参数的类型,类型的完全限定名或别名。这个属性是可选的,因为MyBatis可以推断出具体传入语句的参数.
- 比如dao层接口中有一个查询单个对象的方法:
public UserInfo selectUser(int id);
- 对应的mapper映射文件如下:
<select id="selectUser" parameterType="int" resultType="com.rg.entity.UserInfo">
select * from UserInfo where id = #{id}
</select>
这里边使用的int,而不是全限定名称、是因为mybatis里给每个类型都定义了别名、可以查阅相关文档进行对照。
2、传递简单参数
Dao层接口中方法的参数只有一个简单类型、java基本类型和 String,在mapper文件中的标签中的SQL语句使用占位符#{任意字符}即可接收、和方法的参数名无关。
- 还以上边代码为例、将mapper文件中的SQL语句中的#{id}改为#{userid}也是可以的,如下:
<select id="selectUser" parameterType="int" resultType="com.rg.entity.UserInfo">
select * from UserInfo where id = #{userid}
</select>
3、传递多个参数-Param
当Dao接口方法多个参数、推荐@Param注解传参、在每个参数前边添加@Param(“自定义参数名”)、就相当于给每个参数定义别名、那么在mapper文件中就就这样使用:#
- Dao层接口方法:
public UserInfo selectUser(@Param("uid") int id, @Param("uname") String name);
- mapper映射文件:
<select id="selectUser" resultType="com.rg.entity.UserInfo">
select * from UserInfo where id = #{uid} and Name=#{uname}
</select>
4、传递多个参数-对象
使用Java对象传递参数、在mapper文件SQL语句占位符中就写对象里边属性名称就行。
- 创建实体类、用来传递参数
public class QueryParam
{
private int userId;
private String userName;
//get set toString....
}
- Dao接口中方法
public UserInfo selectUser(QueryParam queryParam);
- mapper映射文件
<select id="selectUser" resultType="com.rg.entity.UserInfo">
select * from UserInfo where id = #{userId} and Name=#{userName}
</select>
以上就是在MyBatis中最常用的参数传递的方式了。当然、还有其它方式,比如按位置传递、使用map传递等等、不过这都不常用、掌握这几种常用的就行了。