一、环境准备
1、导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
2、配置application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
username: root
password: root
main:
banner-mode: off
mybatis-plus:
global-config:
banner: false
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
3、mapper层配置
@Mapper
public interface BookMapper extends BaseMapper<Book> {
}
4、service层配置
接口
public interface BookService extends IService<Book> {
}
实现类
@Service
public class BookServiceImpl extends ServiceImpl<BookMapper,Book> implements BookService {}
5、具体的继承和实现
二、注解操作
1、表映射:@TableName
①采用注解形式:通过@TableName()注解指定映射的数据库表名,就会按照指定的表名进行映射
②通过全局配置解决
可以使用MyBatis-Plus提供的全局配置,为实体类所对应的表名设置默认的前缀,那么就 不需要在每个实体类上通过@TableName标识实体类对应的表。
mybatis-plus:
configuration:
# 配置MyBatis日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
# 配置MyBatis-Plus操作表的默认前缀
table-prefix: t_
2、主键策略@TableId
① 若实体类和表中表示主键的不是id,而是其他字段,通过@Tableld注解对应数据库字段名称。
② 在实体类中uid属性上通过@TableId将其标识为主键,即可成功执行SQL语句。
③ 通过@TableId注解的value属性,指定表中的主键字段。
④ IdType.ASSIGN_ID(默认) 基于雪花算法的策略生成数据id,与数据库id是否设置自增无关
雪花算法是由一个64位的二进制组成的,最终就是一个Long类型的数值。
实现有序、唯一、且不直接暴露排序的数字。
IdType.INPUT:设置手动添加主键 ,否则无法添加数据,把自动递增去掉
IdType.AUTO :使用数据库的自增策略,前提确保数据库设置了id自增,否则无效。
NONE:表示不指定主键生成策略,当我们没有指定主键生成策略或者主键策略为NONE的时候
跟随的是全局策略,全局配置中 id-type是用于配置主键生成策略的,我们可以看一下id-type的
默认值,即雪花算法。
ASSIGN_UUID:全局唯一标识符,定义为一个字符串主键,采用32位数字组成,编码采用16进制,定义了在时间和空间都完全唯一的系统信息。
3、字段映射:@TableField
① 数据库字段和表实体类的属性一致,框架在拼接SQL语句的时候,会使用属性名称直接拼接sql语句
②当数据库字段和表实体类的属性不一致时,我们可以使用@TableField()注解改变字段和属性的映射,让注解中的名称和表字段保持一致
③字段失效情况:当数据库中有字段不希望被查询,我们可以通过@TableField(select = false)来隐藏这个字段,那在拼接SQL语句的时候,就不会拼接这个字段。
④视图字段:实体类中存在但是数据库中不存在的字段。通过@TableField(exist = false)来去掉这个字段,不让他作为查询字段。
4、@TableLogic
① 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除的数据