一、引入依赖

引入MybatisPlus依赖,将Mybatis依赖注释,因为MybatisPlus依赖覆盖Mybatis依赖

引用官方的一句话:

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

com.baomidou

mybatis-plus-boot-starter

3.5.5

适当还能添加一些工具包依赖

cn.hutool

hutool-all

5.8.25

com.baomidou

mybatis-plus-generator

3.5.5

二、配置application.yml

将原本的mybatis的配置注释,替换新配置

注意:type-aliases-package里面是项目实体类的路径,对应mapper的操作对象

#mybatis:

# #mapper配置文件

# mapper-locations: classpath:mapper/*.xml

# type-aliases-package: com.sky.entity

# configuration:

# #开启驼峰命名

# map-underscore-to-camel-case: true

mybatis-plus:

type-aliases-package: com.sky.entity

global-config:

db-config:

id-type: auto #配置实体类中id默认自增

logic-delete-field: deleted # 配置逻辑删除字段

configuration:

default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

mybatis-plus: mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,当前这个是默认值。

可以看到默认值是classpath*:/mapper/**/*.xml,也就是说我们只要把mapper.xml文件放置这个目录下就一定会被加载。

 在之前数据库的配置项里面加上&rewriteBatchedStatements=true 实现mp的批处理

datasource:

# &rewriteBatchedStatements=true 批处理,在下面的url里面添加

url: jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true

driver-class-name: com.mysql.cj.jdbc.Driver

 三、在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹

@SpringBootApplication

@EnableTransactionManagement //开启注解方式的事务管理

@Slf4j

@EnableCaching//开启缓存注解功能

@EnableScheduling//开启任务调度

@MapperScan("com.sky.mapper")

public class QupaiServerApplication {

public static void main(String[] args) {

SpringApplication.run(QupaiServerApplication.class, args);

log.info("server started");

}

}

 三、在需要使用mp的mapper接口上继承BaseMapper

上面xxx表示该接口操作对应的实体类

@Mapper

public interface OrderMapper extends BaseMapper {}

 四、CRUD接口

先说service和serviceImpl应该继承什么

//service

public interface OrderService extends IService {}

//serviceImpl

@Service

@Slf4j

public class OrderServiceImpl extends ServiceImpl implements OrderService {}

extends IService里面的Orders指的是对应操作的对象

extends ServiceImpl里面的指的是该对象对应的mapper和该对象

 五、有需要的话还有必要的注解加在对象的类里面

MybatisPlus就是根据PO实体的信息来推断出表的信息,从而生成SQL的。默认情况下:

MybatisPlus会把PO实体的类名驼峰转下划线作为表名 MybatisPlus会把PO实体的所有变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型 MybatisPlus会把名为id的字段作为主键

 但很多情况下,默认的实现与实际场景不符,因此MybatisPlus提供了一些注解便于我们声明表信息

@TableName

描述:表名注解,标识实体类对应的表 使用位置:实体类

@TableName("user")

public class User {

private Long id;

private String name;

}

TableName注解除了指定表名以外,还可以指定很多其它属性:

属性 类型 必须指定 默认值 描述 value String 否 "" 表名 schema String 否 "" schema keepGlobalPrefix boolean 否 false 是否保持使用全局的 tablePrefix 的值(当全局 tablePrefix 生效时) resultMap String 否 "" xml 中 resultMap 的 id(用于满足特定类型的实体类对象绑定) autoResultMap boolean 否 false 是否自动构建 resultMap 并使用(如果设置 resultMap 则不会进行 resultMap 的自动构建与注入) excludeProperty St ring[] 否 {} 需要排除的属性名 @since 3.3.1

@TableId

描述:主键注解,标识实体类中的主键字段 使用位置:实体类的主键字段

@TableName("user")

public class User {

@TableId

private Long id;

private String name;

}

TableId注解支持两个属性:

属性 类型 必须指定 默认值 描述 value String 否 "" 表名 type Enum 否 IdType.NONE 指定主键类型

IdType支持的类型有:

值 描述 AUTO 数据库 ID 自增 NONE 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT) INPUT insert 前自行 set 主键值 ASSIGN_ID 分配 ID(主键类型为 Number(Long 和 Integer)或 String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法) ASSIGN_UUID 分配 UUID,主键类型为 String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认 default 方法) ID_WORKER 分布式全局唯一 ID 长整型类型(please use ASSIGN_ID) UUID 32 位 UUID 字符串(please use ASSIGN_UUID) ID_WORKER_STR 分布式全局唯一 ID 字符串类型(please use ASSIGN_ID)

这里比较常见的有三种:

AUTO:利用数据库的id自增长 INPUT:手动生成id ASSIGN_ID:雪花算法生成Long类型的全局唯一id,这是默认的ID策略

@TableField 

描述:普通字段注解

@TableName("user")

public class User {

@TableId

private Long id;

private String name;

private Integer age;

@TableField("isMarried")

private Boolean isMarried;

@TableField("concat")

private String concat;

}

一般情况下我们并不需要给字段添加@TableField注解,一些特殊情况除外:

成员变量名与数据库字段名不一致 成员变量是以isXXX命名,按照JavaBean的规范,MybatisPlus识别字段时会把is去除,这就导致与数据库不符。 成员变量名与数据库一致,但是与数据库的关键字冲突。使用@TableField注解给字段名添加转义字符:``

支持的其它属性如下:

属性 类型 必填 默认值 描述 value String 否 "" 数据库字段名 exist boolean 否 true 是否为数据库表字段 condition String 否 "" 字段 where 实体查询比较条件,有值设置则按设置的值为准,没有则为默认全局的 %s=#{%s},参考(opens new window) update String 否 "" 字段 update set 部分注入,例如:当在version字段上注解update="%s+1" 表示更新时会 set version=version+1 (该属性优先级高于 el 属性) insertStrategy Enum 否 FieldStrategy.DEFAULT 举例:NOT_NULL insert into table_a(column) values (#{columnProperty}) updateStrategy Enum 否 FieldStrategy.DEFAULT 举例:IGNORED update table_a set column=#{columnProperty} whereStrategy Enum 否 FieldStrategy.DEFAULT 举例:NOT_EMPTY where column=#{columnProperty} fill Enum 否 FieldFill.DEFAULT 字段自动填充策略 select boolean 否 true 是否进行 select 查询 keepGlobalFormat boolean 否 false 是否保持使用全局的 format 进行处理 jdbcType JdbcType 否 JdbcType.UNDEFINED JDBC 类型 (该默认值不代表会按照该值生效) typeHandler TypeHander 否 类型处理器 (该默认值不代表会按照该值生效) numericScale String 否 "" 指定小数点后保留的位数

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: