MyBatis实现多条件查询时入参的形式
将查询条件封装成Java对象作为参数 举例一:
public interface sysUserMapper {
public List<SysUser> getUserByPojo(SysUser user);
}
<select id="getUserByPojo" resultType="cn.mybatis.pojo.SysUser">
select * from t_sys_user where realName like concat('%',#{realName},'%')
and roleId = #{roleId}
</select>
测试类:
@Test
public void getUserByPojo(){
SysUser u = new SysUser();
u.setRealName("刘");
u.setRoleId(1);
List<SysUser> list = sqlSession.getMapper(sysUserMapper.class).getUserByPojo(u);
for (SysUser user:list) {
System.out.println(user.getId()+"\t"+user.getRealName());
}
MyBatisUtil.closeSqlSession(sqlSession);
}
测试结果:
1 刘阳
小结:将查询条件封装成Java对象作为入参时,sql语句参数应该使用实体类的属性名作为参数,即:#{realName},#{roleId}。
将查询条件封装成Map对象作为入参 示例二:
public List<SysUser> getUserByMap(Map<String ,Object> map);
<select id="getUserByMap" resultType="cn.mybatis.pojo.SysUser" parameterType="map">
select * from t_sys_user where realName like concat('%',#{rname},'%')
and roleId = #{rid}
</select>
测试类:
@Test
public void getUserByMap(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("rname","刘");
map.put("rid","1");
List<SysUser> list = sqlSession.getMapper(sysUserMapper.class).getUserByMap(map);
for (SysUser user:list) {
System.out.println(user.getId()+"\t"+user.getRealName());
}
MyBatisUtil.closeSqlSession(sqlSession);
}
结果:
1 刘阳
小结:将查询条件封装成Map对象作为入参时,sql语句的参数写的是Map集合的key值。
本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/qq_46540738/article/details/115268019