一應俱全,直接複製粘貼拿來用就可以了~ 直接上代碼~
1.pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
<!-- Mabatis啓動器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- mysql數據庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!-- jdbc驅動包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
2.application.yml
# 端口號
server:
port: 8080
# 服務名
spring:
application:
name: mybatis-page-demo
# mysql
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mysql?serverTimezone=UTC
username: root
password: 123456
mybatis:
# 掃描pojo
type-aliases-package: com.guigu.mybatispagedemo.pojo
# 掃描mapper.xml
mapper-locations: classpath:mapper/**/*.xml
# 打印sql
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3. Pojo實體類
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Users {
private Integer id;
private String name;
private int age;
}
4.Pojo參數類
用於傳參 帶條件查詢
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UsersPrams {
private String name;
private String age;
}
5.Mapper.java
@Mapper
public interface UsersMapper {
// 獲取分頁數據 @Param用於給參數命名 在xml中直接調用
List<Users> selVOUsers(@Param("usersPrams") UsersPrams usersPrams, @Param("pageMin")Long pageMin, @Param("pageMax")Long pageMax);
// 計算分頁大小
long selVOUsersCount(@Param("usersPrams") UsersPrams usersPrams);
}
6. Mapper.xml
<?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" >
<!-- 這裏注意修改mapper引用地址 -->
<mapper namespace="com.guigu.mybatispagedemo.mapper.UsersMapper" >
<!-- 獲取分頁數據 -->
<select id="selVOUsers" resultType="Users">
SELECT * from users
<where>
<if test="usersPrams.name!=null and usersPrams.name!=''">
<bind name="bindName" value="'%'+usersPrams.name+'%'"/>
and name like #{bindName}
</if>
<if test="usersPrams.age!=null and usersPrams.age!=''">
and age = #{usersPrams.age}
</if>
<if test="1==1">
and 1=1 LIMIT #{pageMin},#{pageMax}
</if>
</where>
</select>
<!-- 獲取數據總條數 -->
<select id="selVOUsersCount" resultType="long" >
SELECT count(*) from users
<where>
<if test="usersPrams.name!=null and usersPrams.name!=''">
<bind name="bindName" value="'%'+usersPrams.name+'%'"/>
and name like #{bindName}
</if>
<if test="usersPrams.age!=null and usersPrams.age!='' ">
and age = #{usersPrams.age}
</if>
</where>
</select>
</mapper>
7. Service
@Service
public class UserService {
@Autowired
private UsersMapper usersMapper;
// 獲取分頁數據
public PageVO<Users> selVOUsers(UsersPrams usersPrams, Long page, Long size){
PageVO<Users> pageVO = new PageVO<Users>();
// 獲取總數據量
Long total = this.usersMapper.selVOUsersCount(usersPrams);
// 計算分頁 最小值從0開始
Long pageMin = (page-1) * size;
Long pageMax = page * size - 1;
if(pageMin >= total){
pageMin = 0L;
}
if(pageMax >= total){
pageMax = total;
}
// 獲取分頁數據 並注入
List<Users> list = this.usersMapper.selVOUsers(usersPrams, pageMin, pageMax);
pageVO.setList(list);
pageVO.setPage(page);
pageVO.setSize(size);
pageVO.setTotal(total);
return pageVO;
}
}
8. Controller
@RestController
@RequestMapping("sel")
public class PageController {
@Autowired
private UserService userService;
@GetMapping("/pagevo")
public PageVO<Users> selUsersPageVO(@RequestBody(required = false)UsersPrams usersPrams, @RequestParam(value = "page",defaultValue = "1") Long page,@RequestParam(value = "size",defaultValue = "3")Long size){
// System.out.println("usersPrams"+usersPrams.toString());
PageVO<Users> pageVO = this.userService.selVOUsers(usersPrams, page, size);
return pageVO;
}
}
出於各位大佬的公司可能已經封裝好了分頁對象,這裏省略了我自定義的PageVO分頁對象。