当前位置 博文首页 > 梦梦~~的博客:(详解)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值。
????????
cs