MyBatis版本: 3.4.0+
<resultMap type="com.kinsey.woo.Dto.Role" id="roleResultMap">
<id column="id" property="id"/>
<result column="role_name" property="roleName"/>
<result column="note" property="note"/>
</resultMap>(1)通过Map传递参数
<select id="findRoleByMap" parameterType="map" resultMap="roleMap">
select id,role_name,note
from t_role
where role_name like concat('%',#{roleName},'%')
and note like concat('%',#{note},'%')
</select>接口:
public List<Role> findRoleByMap(HashMap<String,String> params);
(2)使用注解方式
//使用注解方式
public List<Role> findRoleByAnnotation(
@Param("roleName") String rolename, @Param("note") String note);
<select id="findRoleByAnnotation" resultMap="roleMap">
select id,role_name,note
from t_role
where role_name like concat('%',#{roleName},'%')
and note like concat('%',#{note},'%')
</select>优缺点: 一目了然,但是参数过多,可读性极差
(2)JavaBean传递参数
RoleParam.java
public class RoleParam {
private String roleName;
private String note;
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
}//使用JavaBean传递参数
public List<Role> findRoleByParams(RoleParam roleParam); <select id="findRoleByParam" parameterType="Open Declaration com.kinsey.woo.Dto.RoleParam
" resultMap="roleMap">
select id,role_name,note
from t_role
where role_name like concat('%',#{roleName},'%')
and note like concat('%',#{note},'%')
</select>总结:
(1)使用Map传递参数。可读性差,后续维护与扩展差
(2)@Param注解方式,受参数个数影响,<=5个参数为佳,超过推荐使用JavaBean方式
(3)当参数个数超过5个时,请使用JavaBean方式
本文介绍了三种在MyBatis中传递参数的方法:使用Map、注解(@Param)及JavaBean,并对比了它们的优缺点。适用于不同场景,帮助开发者选择最合适的参数传递策略。
3万+

被折叠的 条评论
为什么被折叠?



