mybatis中sql语句传入多个参数方法
1 使用map
<select id="selectRole" parameterType="map" resultType="RoleMap"> SELECT id, roleName, note FROM role WHERE roleName LIKE Concat('%',#{roleName},'%') and note like Concat('%',#{note},'%') </select>
在接口中如下定义
List<Role> selectRole(Map map);
说明:这种方法简单易用,弊端是业务关联性不强,查看参数需要查看代码,可读性下降。
2 使用注解传递参数
xml文件中定义sql语句如下
<select id="findRoleByAnnotation" resultType="roleMap"> SELECT id, roleName, note FROM role WHERE roleName LIKE Concat('%',#{roleName},'%') and note like Concat('%',#{note},'%') </select>
接口如下
List<Role> findRoleByAnnotation(@Param("roleName") String rolename, @Param("note") String note);
说明:通过@Param 提供的名称mybatis就知道 #{roleName} 代表 rolename 。参数可读性大大提高了。适用于参数数量较少的情况。如果参数数量过多,推荐使用javabean方式。
3 在参数过多的情况下,使用 javabean 传递参数
参数类RoleParam
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; } }
xml文件查询sql
<select id="findByJavaBean" resultType="roleMap" parameterType="com.huitong.service.command.RoleParam"> SELECT id, roleName, note FROM role WHERE roleName LIKE Concat('%',#{roleName},'%') and note like Concat('%',#{note},'%') </select>
接口文件中
List<Role> findByJavaBean(RoleParam roleparam);
说明:当参数个数多于5个时,推荐使用javabean方式。
学习过程中,难免出错。如果您在阅读过程中遇到不太明白,或者有疑问。欢迎指正...联系邮箱crazyCodeLove@163.com
如果觉得有用,想赞助一下请移步赞助页面:赞助一下