当前位置 博文首页 > 梦梦~~的博客:(详解)MyBatis实现多条件查询时入参的形式

    梦梦~~的博客:(详解)MyBatis实现多条件查询时入参的形式

    作者:[db:作者] 时间:2021-07-12 18:36

    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
    下一篇:没有了