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方式