- MyBatic-Plus 簡介
- SpringBoot 集成MyBatis-Plus
- 分頁查詢
簡介
MyBatis-Plus(簡稱 MP)是一個(gè) MyBatis 的增強(qiáng)工具蛉拙,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變拼缝,為簡化開發(fā)浆竭、提高效率而生予弧。官方網(wǎng)址
核心功能: 代碼生成器不铆,CURD接口四敞,條件構(gòu)造器桐玻,分頁插件,Sequence主鍵提揍,自定義ID生成器
插件擴(kuò)展: 熱加載啤月,邏輯刪除,通用枚舉劳跃,字段類型處理器谎仲,自動(dòng)填充功能,Sql注入器刨仑,攻擊SQL阻斷解析器郑诺,性能分析插件夹姥,執(zhí)行SQL分析打印,樂觀鎖插件辙诞,動(dòng)態(tài)數(shù)據(jù)源辙售,分布式事務(wù),多租戶SQL解析器飞涂,動(dòng)態(tài)表名SQL解析器旦部,MybatisX快速開發(fā)插件
SpringBoot 集成 MyBatis-Plus
- 創(chuàng)建一個(gè)Web項(xiàng)目,添加依賴
https://start.spring.io/较店,pom 文件如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- 在application.yml 文件中配置mysql
# DataSource Config
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: root
- 編寫實(shí)體類,Mapper類
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
public interface UserMapper extends BaseMapper<User> {
}
- 在 Spring Boot 啟動(dòng)類中添加 @MapperScan 注解士八,掃描 Mapper 文件夾:
@SpringBootApplication
@MapperScan("top.lconcise.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
目錄結(jié)構(gòu)如下:
image.png
- 測試:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void contextLoads() {
System.out.println(("----- selectAll method test ------"));
List<User> userList = userMapper.selectList(null);
Assert.assertEquals(5, userList.size());
userList.forEach(System.out::println);
}
}
控制臺(tái)輸出:
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)
通過以上幾個(gè)簡單的步驟,我們就實(shí)現(xiàn)了 User 表的 CRUD 功能梁呈,甚至連 XML 文件都不用編寫婚度!
分頁查詢
- 配置
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 設(shè)置請求的頁面大于最大頁后操作, true調(diào)回到首頁官卡,false 繼續(xù)請求 默認(rèn)false
// paginationInterceptor.setOverflow(false);
// 設(shè)置最大單頁限制數(shù)量蝗茁,默認(rèn) 500 條,-1 不受限制
// paginationInterceptor.setLimit(500);
return paginationInterceptor;
}
}
- 編碼
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectPageVo(Page page, @Param("name") String name);
}
編寫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 namespace="top.lconcise.mapper.UserMapper">
<select id="selectPageVo" resultType="top.lconcise.domain.User">
SELECT id,`name` FROM user WHERE true
<if test="name != null and name !=''">AND `name` LIKE CONCAT('%',#{name},'%')</if>
</select>
</mapper>
- 對于IDEA系列編輯器寻咒,XML 文件是不能放在 java 文件夾中的哮翘,IDEA 默認(rèn)不會(huì)編譯源碼文件夾中的 XML 文件,可以參照以下方式解決:
- 指定 POM 文件的 resource
<build>
<resources>
<resource>
<!-- xml放在java目錄下-->
<directory>src/main/java</directory>
<includes>
<include>**/mapper/*.xml</include>
</includes>
</resource>
<!--指定資源的位置(xml放在resources下仔涩,可以不用指定)-->
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<build>
- 測試:
@Test
public void contextLoads() {
IPage<User> userIPage = userMapper.selectPageVo(new Page(1, 5), "J");
userIPage.getRecords().forEach(System.out::println);
}
控制臺(tái)輸出:
User(id=1, name=Jone, age=null, email=null)
User(id=2, name=Jack, age=null, email=null)
源碼地址:https://github.com/lbshold/springboot/tree/master/SpringBoot-MyBatisPlus