mybatis-plus 官方文档
mybatis-plus 配置文档
1.添加pom引用
maven的引用很简单,官方已经给出starter,不需要我们考虑它的依赖关系了,此处使用的是2.1.1和3.3.2,版本号要对应,否则会报错。
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
2.配置
#mybatis-plus
# xml扫描:多个以逗号或者分好分隔
mybatis-plus.mapper-locations=classpath:mybatis/*/*.xml,classpath:mybatis/*/*/*.xml
# 实体类扫描:多个以逗号或者分好分隔
mybatis-plus.type-aliases-package=com.microplay.*.entity,com.microplay.*.*.entity
mybatis-plus.configuration.auto-mapping-behavior: full
# 是否开启自动驼峰命名规则
mybatis-plus.configuration.map-underscore-to-camel-case: true
mybatis-plus.configuration.log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 数据库配置
# 驼峰下划线转换
mybatis-plus.configuration.db-config.column-underline: true
# 数据库大写下划线转换
mybatis-plus.configuration.db-config.capital-mode: true
# 逻辑删除前
mybatis-plus.configuration.db-config.logic-not-delete-value: 1
# 逻辑删除后
mybatis-plus.configuration.db-config.logic-delete-value: 0
注意事项:
需要更改的地方有:文件输出路径(根据项目需要定制),数据源(此类是单独的数据库反向生成代码执行文件,因此springboot的数据源不起作用),包配置,以及一些基本的生成策略;
官方已经提供了基于springboot的配置,将其拷贝过来放在application.yml中即可使用,此处只是将官方部分的配置删减过一些。其中column-underline: true特别好用,会自动将下划线格式的表字段,转换为以驼峰格式命名的属性。
# mybatis-plus
mybatis-plus:
# xml扫描:多个以逗号或者分好分隔
mapper-locations: classpath:mybatis/*/*.xml,classpath:mybatis/*/*/*.xml
# 实体类扫描:多个以逗号或者分好分隔
type-aliases-package: com.microplay.*.entity,com.microplay.*.*.entity
global-config:
db-config:
id-type: auto
field-strategy: not_empty
#驼峰下划线转换
column-underline: true
#逻辑删除配置
logic-delete-value: 0
logic-not-delete-value: 1
db-type: mysql
refresh: false
configuration:
cache-enabled: false
auto-mapping-behavior: full
# 是否开启自动驼峰命名规则
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 数据库配置
# 驼峰下划线转换
db-config.column-underline: true
# 数据库大写下划线转换
db-config.capital-mode: true
# 逻辑删除前
db-config.logic-not-delete-value: 1
# 逻辑删除后
db-config.logic-delete-value: 0
注意!!!生成后一定记得在spring boot项目中添加mybatis的包扫描路径,或@Mapper注解:
@SpringBootApplication
@MapperScan("com.XXX.XXX.mapper") // 这里需要根据项目报名配置
public class SpringBootMybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootMybatisPlusApplication.class, args);
}
}
@Mapper注解:
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
否则会报:Error creating bean with name 'xxxServiceImpl': Unsatisfied dependency expressed through field 'baseMapper';
至此,我们的底层增删改查操作全部完毕!下面来编写简单的controller来测试效果。
3.mybatis-plus分页(可选)
1.添加配置文件,此处配置文件表示开启mybatis-plus分页功能
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
或者:
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Mybatis-Plus 分页配置
* 启动类和配置类只需配置一个 @MapperScan
*/
@Configuration
@EnableTransactionManagement
public class MybatisConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
paginationInterceptor.setOverflow(true);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInterceptor.setLimit(1000);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
4.代码测试
4.1 controller:
import com.example.model.auto.User;
import com.example.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@PostMapping("/getUser")
public User getUser(){
return userService.getById(1);
}
}
4.2 IUserService:
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.model.auto.User;
public interface IUserService extends IService<User> {
}
4.3 UseServiceImpl:
import com.example.model.auto.User;
import com.example.mapper.auto.UserMapper;
import com.example.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
@Autowired
private UserMapper userMapper;
}
4.4 UserMapper:
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.model.auto.User;
public interface UserMapper extends BaseMapper<User> {
}
4.4 在resources目录下新建mapper文件夹,新建UserMapper.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="com.XXX.XXX.UserMapper">
</mapper>