1、limit实现分页
limit是sql中存在的,可以实现分页查询,其使用方法为:
select * from table1 limit startIndex,pageStze
--这里的startIndex与pageSize在使用时用整数代替
顾名思义,limit需要两个参数:startIndex是标识页面的其实下标的,就是从第多少条记录开始分页显示;pageSize是每一个页面显示的记录的条数。比如:
select * from table1 limit 3,5
就表示从表中第三条记录开始,每五条记录作为一页来显示。mybatis中可以传入这两个参数。
如果第一个参数没有指定,则代表从第0条记录开始查,每页n条数据:
select * from table1 limit n;#从第条数据开始显示,每页n条数据
2、Map的用法
使用Map要先导入util包
Map的核心是键值对,直接用了就懂了,上代码:
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",0);
map.put("pageSize",3);
创建一个Map的实例, HashMap<String,Integer> 是定义键值对的“结构”,String就是key(键)的类型,Integer就是这个key的value(值)的类型,当然这个可以自己设置。然后就可调用Map实例的方法 put() 来存放一个键值对了,当然一个Map实例可存放多个键值对。利用Map传参较为方便。
3、mybatis中实现分页查询
这跟之前的查询也没啥区别,只是在sql语句上使用了limit。上代码:
编写接口中的方法
//分页测试
List<User> getUserByLimit(Map<String,Integer> map);
在配置中“实现”这个方法(注意这里取map中的参数是#{键的名字})
<!--使用map来传参-->
<select id="getUserByLimit" parameterType="map" resultType="User">
<!--limit后面跟两个参数,第一个参数是显示分页的起始下标,第二个是页面的大小-->
select * from mybatis.user limit #{startIndex},#{pageSize};
</select>
测试
@Test
public void limitTest00(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
//创建map来存放参数,map就是键值对,定义时HashMap<String,Integer>转下一行
//String就是key的类型,Integer就是这个健的值的类型,当然这两个类型可自行设置
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",0);
map.put("pageSize",3);
List<User> usersByPage = mapper.getUserByLimit(map);
for(User user:usersByPage){
System.out.println(user.getId());
}
}