MyBatis-Plus

创建日期:2024-06-21
更新日期:2024-12-18

参考文档:https://mp.baomidou.com/

依赖项:

org.springframework.boot: spring-boot-starter-web:

com.baomidou: mybatis-plus-annotation: 3.4.2

mysql:mysql-connector-java:8.0.22

org.projectlombok: lombok

com.baomidou:mybatis-plus-boot-starter:3.4.2

代码自动生成:

org.freemarker:freemarker:2.3.30

com.baomidou: mybatis-plus-generator: 3.4.1

依赖项

com.baomidou

mybatis-plus

3.5.2

com.baomidou

mybatis-plus-annotation

3.5.2

注意:mybatis-plus版本匹配,否则可能找不到类。

常用注解:

@MapperScan(package):搜索包里的映射

配置文件:application.yml

# DataSource Config

spring:

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql:~/~/localhost:3306/test?serverTimezone=GMT

username: root

password: root

代码生成器:https://mp.baomidou.com/guide/generator.html

@Autowired如果有两个@Service匹配,则需要在实现上加@Primary。

查询封装:

QueryWrapper wrapper = new QueryWrapper<>();

wrapper.gt("age", 20);

wrapper.like("name", keyword);

List list = service.list(wrapper);

分页:

Page page = new Page<>();

page.setCurrent(current);

page.setSize(size);

return service.page(page);

常见问题

  1. MyBatis-Plus最多返回500条数据。

在SpringBoot/SpringCloud项目中config文件夹添加以下代码即可。

package com.hylab.dap.config;

import com.baomidou.mybatisplus.annotation.DbType;

import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;

import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

/~*~*

~ * MyBatisPlus配置文件

~ */

@Configuration

public class MyBatisPlusConfig {

~ @Bean

~ public MybatisPlusInterceptor mybatisPlusInterceptor() {

~ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

~ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));

~ return interceptor;

~ }

~ public PaginationInterceptor paginationInterceptor() {

~ PaginationInterceptor paginationInterceptor = new PaginationInterceptor();

~ paginationInterceptor.setLimit(100000);

~ return paginationInterceptor;

~ }

~ public ConfigurationCustomizer configurationCustomizer() {

~ return configuration -> configuration.setUseDeprecatedExecutor(false);

~ }

}