在mybatis中使用Limit实现分页操作
- 编写实现分页的接口
public interface UserMapper {
//分页Limit
List<User> getUserByLimit(Map<String,Integer> map);
}
- 编写配置接口文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace: 绑定一个对应的Dao(Mapper)接口;-->
<mapper namespace="com.xxw.dao.UserMapper">
<!--结果集映射-->
<resultMap id="UserMap" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<!--分页-->
<select id="getUserByLimit" resultMap="UserMap">
select *
from mybatis_xxw.user
limit #{startIndex},#{pageSize}
</select>
</mapper>
- 测试类
public class UserMapperTest {
@Test
//分页
public void getUserByLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userLimit = mapper.getUserByLimit(map);
for (User user : userLimit) {
System.out.println(user);
}
sqlSession.close();
}
}
测试结果:
注:以上方法是操作数据库实现的分页,还可以 使用 RowBounds 通过Java代码层实现分页
- 接口
public interface UserMapper {
//分页RowBounds
List<User> getUserByRowBounds();
}
- 接口配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace: 绑定一个对应的Dao(Mapper)接口;-->
<mapper namespace="com.xxw.dao.UserMapper">
<!--结果集映射-->
<resultMap id="UserMap" type="user">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<!--分页2-->
<select id="getUserByRowBounds" resultMap="UserMap">
select *
from mybatis_xxw.user
</select>
</mapper>
- 测试类
@Test
//分页
public void getUserByRowBounds(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//RowBounds实现
RowBounds rowBounds = new RowBounds(1, 2);
//通过Java代码层实现分页
List<User> userList = sqlSession.selectList("com.xxw.dao.UserMapper.getUserByRowBounds",null,rowBounds);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
注:目前最流行的是前段实现分页操作,使用pagehelper插件
网址:https://pagehelper.github.io/