方法一:Java Bean传参(推荐)
dao层的函数方法
User selectUser(User user);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap">
select * from table_user
where user_name = #{user.userName}
and user_age = #{user.userAge}
</select>
service层调用
private User selectUserService(){
User user = new User();
user.setUserName("zhangsan");
user.setUserAge(18);
User user=dao.selectUser(user);
}
方法二:注解传参(推荐)
通过MyBatis的注解(@Param(“paramName”))方式来注明参数。
dao层的函数方法
User selectUser(@Param(“userName”)String name,@Param(“userAge”)Integer age);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap">
select * from table_user
where user_name = #{userName}
and user_age = #{userAge}
</select>
注意:
1.同样由于是多参数传入,所以不需要对parameterType进行配置。
方法三:Map 传参
通过Map方式传递多个参数,xml配置中#{}使用 map中的key来获取对应值。
dao层的函数方法
User selectUser(Map<String,String> paramMap);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap">
select * from table_user
where user_name = #{userName}
and user_age=#{userAge}
</select>
service层调用
private User selectUserService(){
Map<String,String> paramMap=new hashMap();
paramMap.put(“userName”,”对应具体的参数值”);
paramMap.put(“userAge”,”对应具体的参数值”);
User user=dao. selectUser(paramMap);
}
方法四:索引
通过使用索引方式,来指定想传入的参数。
dao层的函数方法
User selectUser(String name,Integer age);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap">
select * from table_user
where user_name = #{param1} and user_age=#{param2}
</select>
其中,#{param1}或者#{arg0}代表接收的是dao层中的第一个参数,#{param2}或者#{arg1}代表dao层中第二参数。
注意:
1.由于是多参数传入,所以不需要对parameterType进行配置。
2.由于使用索引方式,所以在DAO接口中不需要使用@Param注解来注明参数名。
方法五:直接传参
dao层的函数方法
User selectUser(String name);
对应的Mapper.xml
<select id="selectUser" resultMap="BaseResultMap" paramType="java.lang.String">
select * from table_user
where user_name = #{anyname}
</select>
service层调用
private User selectUserService(){
User user=dao.selectUser("zhangsan");
}
注意:当传入一个参数时,可以直接获取,而且xml文件中#{}可以用任意名来获取该参数的值。