〇、准备工作
数据库:
create database MyBatis_DB;
use MyBatis_DB;
create table user(
id int primary key auto_increment,
name varchar(32) not null,
pwd varchar(32) not null
);
然后随随便便插入几条数据
接下来创建一个Maven
项目,注入MySql
、MyBatis
、Junit
、LOG4J
依赖
创建表User
实体类,再创建一个UserMapper
接口,UserMapper.xml
以及测试类
接下来开始实现分页查询
一、Limit 实现分页
第一步、编写UserMapper
接口
List<User> findUserByLimit(Map<String,Integer> map);
第二步、编写UserMapper.xml
文件,写sql
,这里的接收参数是一个Map
:
<select id="findUserByLimit" resultType="User" parameterType="map">
select * from mybatis_db.user limit #{startPage},#{Page}
</select>
第三步、编写测试类,首先搞一个Map
存储要传送的参数,然后调用方法,输出结果,最后关闭连接
//获取SqlSession
private SqlSession sqlSession = MyBatisUtils.getSqlSession();
//获取mapper
private UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//limit分页
@Test
public void findUserByLimitTest(){
Map<String,Integer> map = new HashMap<String, Integer>();
map.put("startPage",0);
map.put("Page",5);
List<User> userByLimit = mapper.findUserByLimit(map);
for (User user : userByLimit) {
System.out.println(user);
}
sqlSession.close();
}
输出结果:
二、RowBounds 实现分页 | 不推荐使用
第一步、编写接口
List<User> findUserByRowBounds();
第二步、编写XML
:
<select id="findUserByRowBounds" resultType="User">
select * from mybatis_db.user;
</select>
第三步、编写测试类
//获取SqlSession
private SqlSession sqlSession = MyBatisUtils.getSqlSession();
//RowBounds实现分页
@Test
public void findUserByRowBoundsTest(){
//RowBounds实现
RowBounds rowBounds = new RowBounds(0, 5);
List<User> UserList = sqlSession.selectList(
"com.wzq.mapper.UserMapper.findUserByRowBounds",
null, rowBounds);
for (User user : UserList) {
System.out.println(user);
}
sqlSession.close();
}
测试: