MyBatis整合SpingBoot
一、引入SprngBoot0-Starter-parent依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<relativePath/>
</parent>
二、引入MybatisPlus以及SpringBoot基础框架
<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>
三、配置数据库连接
spring:
datasource:
username: 账户
password: 密码
url: jdbc:mysql://连接地址:3306/数据库名称?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.cj.jdbc.Driver
四、配置启动配置类
1、配置分页
2、配置乐观锁
@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使用
@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 | 数字越小越靠前 |
|