MyBatisPlus详解 学到就是赚到 !!!

在这里插入图片描述
简介: Mybatis-Plus是一个Mybatis的增强工具,我们在使用Mybatis-Plus之后既可以使用Mybatis-Plus的特有功能,又能够正常使用Mybatis的原生功能为简化开发、提高开发效率而生提供了一些很有意思的插件,比如SQL性能监控、乐观锁、执行分析等。高级摸鱼工程师必备神器!!!

前期准备:
Mybatis-Plus官网文档连接地址 https://mp.baomidou.com

Mysql 数据库 SQL:

DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `name` varchar(255) DEFAULT '' COMMENT '名字',
  `sex` varchar(255) DEFAULT NULL COMMENT '性别',
  `hobby` varchar(255) DEFAULT NULL COMMENT '爱好',
  `version` int(11) NOT NULL DEFAULT '0' COMMENT '版本',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

MyBatis-Plus当前最新版本:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.2</version>
</dependency>

Spring Boot 工程MyBatis-Plus 配置 :
一、配置 MapperScan 注解

@SpringBootApplication
@ComponentScan(basePackages = {
    
    "com.zhu"})
//TODO 此处扫描的是Dao接口或Mapper
@MapperScan("com.zhu.**.dao")
public class DemoApplication {
    
    
    public static void main(String[] args) {
    
    
        SpringApplication.run(DemoApplication.class, args);
    }

}

application.properties:

server.port=8080
logging.level.com.geely.gbop=debug
#JDBC Connection URL
spring.datasource.url = jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
#JDBC 用户名
spring.datasource.username=root
#JDBC 密码
spring.datasource.password=root
# 数据连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath*:mappers/*.xml
mybatis.config-location=classpath:mybatis/mybatis-config.xml

#Mybatis-plus mybatis扫描
mybatis-plus:
mybatis-plus.mapper-locations=classpath:/mappers/**/*.xml
# 日志输出
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

Dao实体类对象:

@Data
@Builder
@TableName(value = "person")
public class PersonDO {
    
    

    @TableId(value = "id")
    private int id;

    @TableField(value = "name")
    private String name;

    @TableField(value = "sex")
    private String sex;

    @TableField(value = "hobby")
    private String hobby;

    @TableField(value = "version")
    @Version
    private int version;
}

在Dao对象中用到的部分注解可以直接点击连接进入官网文档详细了解:MyBatis-Plus注解详情学习

PS:细心大家回发现一个@Version注解 其实这个注解作用就是将数据库Version字段每次在做RUD时,会默认在数据库Version字段+1 但是在使用该注解是需要添加一个乐观锁插件:

 // 扫描我们的 mapper 文件夹  我这里dao接口
 @MapperScan("com.zhu.dao")
 @EnableTransactionManagement
 @Configuration // 配置类 
   public class MyBatisPlusConfig {
    
     
   // 注册乐观锁插件 
   @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    
    
    return new OptimisticLockerInterceptor(); 
  }
 }

在这里插入图片描述

在这里插入图片描述

接下来我们开始简单的学习Service CRUD 接口 — >

@Repository // 代表持久层
public interface PersonMapper extends BaseMapper<PersonDO> {
    
    
    // 继承了BaseMapper,所有的方法都来自己父类
    //  我们也可以编写自己的扩展方法!  支持XMl 编写复杂的SQL语句
}

在这里插入图片描述
在这里插入图片描述
细心看其实我们并没有封装好方法和语句 那么MyBatis-Plus是怎么样帮我们执行 或者封装的哈!
在这里插入图片描述
原来在我们编写Mapper层接口时,实现了MyBatis-Plus里面的BaseMapper 里面已经帮我们写好了 常用的单表查询语句,我们只需要通过接口去实现接口调用人家写好的方法便可以执行SQL语句,达到我们的目的即可,我总结一下常用Api 就不一一给大家展示代码演示了 有兴趣大家可以一 一去尝试!!!

PS:MyBatis-Plus因为是中国人开发的所以在名称命名上和我们的书写习惯比较熟悉!

insert() // 新增
update() // 可以传入条件构造器,根据条件修改
updateById() // 根据id修改
selectList() // 查询集合,可以传入条件构造器
selectById() // 根据id查询单条记录
selectPage() // 分页查询,可以传入条件构造器
delete() // 可以传入条件构造器,根据条件删除
deleteById() // 根据id删除单条记录
deleteMap() // 根据map集合删除
deleteBatchIds() // 批量删除

学习完成后简单的CRUD之后我呢接下来学习MyBatis-Plus的 查询条件构造器(Wapper)

在学习Wapper之前,先来看一下它的类图结构:
在这里插入图片描述

说明:
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

类图关键类说明:

Wrapper : 条件构造抽象类,最顶端父类
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
QueryWrapper : Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper

特别注意官方文档警告:

在这里插入图片描述

在这里插入图片描述
看到这里相信大家已经明白 条件构造器(Wapper)是怎么回事了哈!
其实就是在我们编写的SQL语句中拼接在Where后面的查询条件 更多的Api方法请给位观众大老爷移步至官方文档进行学习和测试 :
Wapper条件构造器详解!!!

学到这里相信大家对MyBatis-Plus有了一定的了解了 建议大家可以观看一下破站小狂神的学习视频进行学习,简单的小后台系统用这个的确方便了很多,如果业务仍然需要用MyBatis的XML编写复杂的SQL语句MyBatis-Plus同样也是支持的,大家可以根据情况合理利用哈!博客上还有关于通用Mapper大家有兴趣也可以Look、Look 多支持哈!!!

学习链接:https://www.bilibili.com/video/BV17E411N7KN

Guess you like

Origin blog.csdn.net/weixin_48134878/article/details/116004446