题记部分
001 || limit
select * from mybatis.user limit 2,5;
- 2代表偏移量,从结果集的第3行开始。
- 5代表返回的记录数
UserMapper
List<User> getUserByLimit(Map<String,Integer> map);
UserMapper.xml
<select id="getUserByLimit" parameterType="map" resultType="com.harley.pojo.User">select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
测试类
package com.harley.mapper;import com.harley.dao.UserMapper;
import com.harley.pojo.User;
import com.harley.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.List;/*** @author harley* @since 2025-02-15 20:19:43*/
public class UserDaoTest {static Logger logger = Logger.getLogger(UserDaoTest.class);// 第一步: 获得SqlSession对象SqlSession sqlSession;UserMapper userMapper;@Beforepublic void init(){logger.info("初始化连接...");sqlSession = MybatisUtils.getSqlSession();userMapper = sqlSession.getMapper(UserMapper.class);}@Testpublic void getUserByLimit(){HashMap<String,Integer> map = new HashMap<String,Integer> map = new HashMap<String,Integer>();map.put("startIndex",0);map.put("pageSize",2);List<User> userList = userMapper.getUserByLimit(map);for (User user: userList){System.out.println(user);}}@Afterpublic void close(){logger.info("关闭数据库连接...");sqlSession.close();}
}
002 || RowBounds分页
step1: UserMapper
List<User> getUserByRowBounds();
step2: UserMapper.xml
<resultMap id="UserMap" type="com.harley.pojo.User"><result column="id" property="id"/><result column="name" property="name"/><result column="pwd" property="password"/>
</resultMap>
<select id="getUserByRowBounds" resultMap="UserMap">select * from mybatis.user
</select>
step3: test
package com.harley.mapper;import com.harley.dao.UserMapper;
import com.harley.pojo.User;
import com.harley.utils.MybatisUtils;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.List;/*** @author harley* @since 2025-02-15 20:19:43*/
public class UserDaoTest {static Logger logger = Logger.getLogger(UserDaoTest.class);// 获得SqlSession对象SqlSession sqlSession;@Beforepublic void init(){logger.info("初始化连接...");sqlSession = MybatisUtils.getSqlSession();}@Testpublic void getUserByRowBounds(){RowBounds rowBounds = new RowBounds(1, 2);List<User> userList = sqlSession.selectList("com.harley.dao.UserMapper.getUserByRowBounds", null, rowBounds);for (User user : userList) {System.out.println(user);}}@Afterpublic void close(){logger.info("关闭数据库连接...");sqlSession.close();}
}
003 || PageHelper
step1: 引入依赖
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version>
</dependency>
step2: 配置PageHelper
application.properties
# 设置数据库方言,根据实际使用的数据库进行修改
pagehelper.helper-dialect=mysql
# 启用合理化查询,如果页码小于 1 则返回第一页,如果页码大于总页数则返回最后一页
pagehelper.reasonable=true
# 支持通过 Mapper 接口参数来传递分页参数
pagehelper.support-methods-arguments=true
application.yml
pagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: true
step3: 使用
(1)实体类
public class User{private Long id;private String name;private Integer age;
}
(2)Mapper接口
@Mapper
public interface UserMapper{List<User> findAllUsers();
}
(3)Service层
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public PageInfo<User> getUsersByPage(int pageNum, int pageSize) {// 开启分页功能,pageNum 表示当前页码,pageSize 表示每页显示的记录数PageHelper.startPage(pageNum, pageSize);// 执行查询操作List<User> userList = userMapper.findAllUsers();// 将查询结果封装到 PageInfo 对象中return new PageInfo<>(userList);}
}
(4)Controller层
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;@RestController
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/users")public PageInfo<User> getUsers(@RequestParam(defaultValue = "1") int pageNum,@RequestParam(defaultValue = "10") int pageSize) {return userService.getUsersByPage(pageNum, pageSize);}
}