mybatis传入Map

提出问题

在做查询时,不但有查询条件,当查询结果较多时,还需要做分页查询,分页查询需要传入分页参数。

之前做查询时,将查询条件封装到 实体类 中,但实体类中 没有 分页参数

所以在做分页查询时,如果传入 实体类 ,那么将无法传 分页参数

解决问题

mybatis还可以传入 Map 类型

也就是说:将查询条件、分页参数 放入到 Map 中,在传给 sql

修改 IUserMapper

public int queryList(Map map);

修改 userMapper.xml

<selectid="queryList" resultMap="user" parameterType="java.util.Map">
select * from user  where username= #{name} limit #{start},#{limit}
</select>

注意: parameterType属性值可以是 map 或 java.util.Map 或 不设置该属性

执行

@Test
public void testSelectByIds() throws IOException {
    Map map=new HashMap();
    map.put("name","李雷");
    map.put("start",0);
    map.put("limit",10);

    InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession sqlSession = sqlSessionFactory.openSession();
    IUserMapper mapper = sqlSession.getMapper(IUserMapper.class);
    List<User> list=mapper.queryList(map);
    for(User u:list) {
        String info = String.format("id:%s,用户名:%s,密码:%s", u.getId(), u.getUsername(), u.getPassword());
        System.out.println(info);
    }
    sqlSession.close();
    inputStream.close();
}

原文出处:/show_1EF6MrSh1k7K.html