MyBatis Plus
添加依赖
引入 MyBatis-Plus Starter 依赖
Spring Boot2
xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.15</version>
</dependency>Spring Boot3
xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.15</version>
</dependency>application.yml
yml
mybatis-plus:
configuration:
map-underscore-to-camel-case: false
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: isDelete # 全局逻辑删除的实体字段名
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
java
@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}加了@MapperScan mapper接口就不用加@Mapper
java
public interface AppMapper extends BaseMapper<App> {
}java
public interface AppService extends IService<App> {
}java
@Service
public class AppServiceImpl extends ServiceImpl<AppMapper, App> implements AppService {
}其他
分页
配置
java
/**
* MyBatis Plus 配置
*
*/
@Configuration
@MapperScan("com.bingli.duskeval.mapper")
public class MyBatisPlusConfig {
/**
* 拦截器配置
* @return
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 如果配置多个插件, 切记分页最后添加
return interceptor;
}
}自定义 Mapper 方法中使用分页
你可以通过以下方式在 Mapper 方法中使用分页:
IPage<UserVo> selectPageVo(IPage<?> page, Integer state);
// 或者自定义分页类
MyPage selectPageVo(MyPage page);
// 或者返回 List
List<UserVo> selectPageVo(IPage<UserVo> page, Integer state);对应的 XML 配置:
xml
<select id="selectPageVo" resultType="xxx.xxx.xxx.UserVo">
SELECT id,name FROM user WHERE state=#{state}
</select>逻辑删除
实体类要加@TableLogic
java
@TableName(value ="app")
@Data
public class App {
/**
* 是否删除
*/
@TableLogic
private Integer isDelete;
}乐观锁(高并发核心)
实体字段
java
@Version
private Integer version;配置
java
interceptor.addInnerInterceptor(
new OptimisticLockerInnerInterceptor()
);