提出问题
在做查询时,不但有查询条件,当查询结果较多时,还需要做分页查询,分页查询需要传入分页参数。
之前做查询时,将查询条件封装到 实体类 中,但实体类中 没有 分页参数
所以在做分页查询时,如果传入 实体类 ,那么将无法传 分页参数
解决问题
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();
}