MyBatis整合SpingBoot
一、引入SprngBoot0-Starter-parent依赖
1 2 3 4 5 6
| <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version> <relativePath/> </parent>
|
二、引入MybatisPlus以及SpringBoot基础框架
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency> </dependencies>
|
三、配置数据库连接
1 2 3 4 5 6
| spring: datasource: username: 账户 password: 密码 url: jdbc:mysql://连接地址:3306/数据库名称?useUnicode=true&characterEncoding=utf8 driver-class-name: com.mysql.cj.jdbc.Driver
|
四、配置启动配置类
1、配置分页
2、配置乐观锁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| @Configuration @EnableTransactionManagement @MapperScan(basePackages = "扫描的Mapper包名") public class MybatisConfig {
@Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); paginationInnerInterceptor.setOverflow(true); paginationInnerInterceptor.setMaxLimit(1000L); interceptor.addInnerInterceptor(paginationInnerInterceptor);
OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor = new OptimisticLockerInnerInterceptor(); interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor); BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor(); interceptor.addInnerInterceptor(blockAttackInnerInterceptor); return interceptor; }
}
|
五、@Mapper注解与Dao和Service使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @Mapper public interface 实体类Entity extends BaseMapper<你的数据Entity> { }
public interface Service名称 extends IService<实体类Entity> { }
@Service("注入的ServiceBean名称") public class ServiceImpl名称 extends ServiceImpl<Mapper对象, 实体类Entity> implements Service名称 { }
|
六、常用实体类注解
官方参考文档
@TableName
- 描述:表名注解,标识实体类对应的表
- 使用位置:实体类
@TableId
@TableField
@Version
- 描述:乐观锁注解、标记
@Verison
在字段上
@EnumValue
@TableLogic
属性 |
类型 |
必须指定 |
默认值 |
描述 |
value |
String |
否 |
“” |
逻辑未删除值 |
delval |
String |
否 |
“” |
逻辑删除值 |
@KeySequence
- 描述:序列主键策略
oracle
- 属性:value、resultMap
属性 |
类型 |
必须指定 |
默认值 |
描述 |
value |
String |
否 |
“” |
序列名 |
clazz |
Class |
否 |
Long.class |
id 的类型, 可以指定 String.class,这样返回的 Sequence 值是字符串”1” |
@OrderBy
- 描述:内置 SQL 默认指定排序,优先级低于 wrapper 条件查询
属性 |
类型 |
必须指定 |
默认值 |
描述 |
isDesc |
boolean |
否 |
true |
是否倒序查询 |
sort |
short |
否 |
Short.MAX_VALUE |
数字越小越靠前 |