MyBatisPlus

MyBatisPlus概述

需要的基础:把我的MyBatis、Spring、SpringMVC就可以学习这个了!

为什么要学习它呢?MyBatisPlus可以节省我们大量工作时间,所有的CRUD代码它都可以自动化完成!

JPA 、 tk-mapper、MyBatisPlus

偷懒的!

是什么? MyBatis 本来就是简化 JDBC 操作的!

官网:https://mp.baomidou.com/ MyBatis Plus,简化 MyBatis !

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑

损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作, BaseMapper

强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求, 以后简单的CRUD操作,它不用自己编写了!

支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题

支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作

支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )

内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、

Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用(自动帮你生成代码)

内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询

分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、 Postgre、SQLServer 等多种数据库

内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

所有学不会都是给懒找的借口!伸手党,白嫖党!

快速入门

地址:https://mp.baomidou.com/guide/quick-start.html#初始化工程使用第三方组件:

1、导入对应的依赖

2、研究依赖如何配置

3、代码如何编写

4、提高扩展技术能力!

1、创建数据库 2、创建user表

3、编写项目,初始化项目!使用SpringBoot初始化!

4、导入依赖

说明:我们使用 mybatis-plus 可以节省我们大量的代码,尽量不要同时导入 mybatis 和 mybatis- plus!版本的差异!

5、连接数据库!这一步和 mybatis 相同!

6、传统方式pojo-dao(连接mybatis,配置mapper.xml文件)-service-controller 6、使用了mybatis-plus 之后

pojo

mapper接口

注意点,我们需要在主启动类上去扫描我们的mapper包下的所有接口

测试类中测试

结果

1、SQL谁帮我们写的 ? MyBatis-Plus 都写好了

2、方法哪里来的? MyBatis-Plus 都写好了

配置日志

我们所有的sql现在是不可见的,我们希望知道它是怎么执行的,所以我们必须要看日志!

配置完毕日志之后,后面的学习就需要注意这个自动生成的SQL,你们就会喜欢上 MyBatis-Plus!

CRUD扩展

插入操作

主键生成策略

分布式系统唯一id生成:https://www.cnblogs.com/haoxinyue/p/5208136.html

雪花算法:

snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全球唯

一!

我们需要配置主键自增:

1、实体类字段上

2、数据库字段一定要是自增!

  1. 再次测试插入即可!

更新操作

所有的sql都是自动帮你动态配置的!

自动填充

创建时间、修改时 间!这些个操作一遍都是自动化完成的,我们不希望手动更新!

阿里巴巴开发手册:所有的数据库表:gmt_create、gmt_modified几乎所有的表都要配置上!而且需要自动化!

1、在表中新增字段 create_time, update_time

2、再次测试插入方法,我们需要先把实体类同步!

3、再次更新查看结果即可

1、删除数据库的默认值、更新操作!

  1. 实体类字段属性上需要增加注解

// 字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
  1. 编写处理器来处理这个注解即可!

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component // 一定不要忘记把处理器加到IOC容器中!
public class MyMetaObjectHandler implements MetaObjectHandler {

// 插入时的填充策略
   @Override
   public void insertFill(MetaObject metaObject) {
   log.info("start insert fill.....");
   // setFieldValByName(String fieldName, Object fieldVal, MetaObject
metaObject
   this.setFieldValByName("createTime",new Date(),metaObject);
   this.setFieldValByName("updateTime",new Date(),metaObject);
   }

// 更新时的填充策略
   @Override
   public void updateFill(MetaObject metaObject) {
   log.info("start update fill.....");
   this.setFieldValByName("updateTime",new Date(),metaObject);
  }
}

4、测试插入

5、测试更新、观察时间即可!

乐观锁

乐观锁:1、先查询,获得版本号 version = 1
-- A
update user set name = "kuangshen", version = version + 1
where id = 2 and version = 1
-- B 线程抢先完成,这个时候 version = 2,会导致 A 修改失败!
update user set name = "kuangshen", version = version + 1
where id = 2 and version = 1

1、给数据库中增加version字段!

4.测试一下!

查询操作

分页查询

删除操作

  1. 根据 id 删除记录

我们在工组中会遇到一些问题:逻辑删除!

逻辑删除

管理员可以查看被删除的记录!防止数据的丢失,类似于回收站!测试一下:

以上的所有CRUD操作及其扩展操作,我们都必须精通掌握!会大大提高你的工作和写项目的效率!

性能分析插件

使用性能分析插件,可以帮助我们提高效率!

条件构造器

十分重要:Wrapper

我们写一些复杂的sql就可以使用它来替代!

  1. 测试一,记住查看输出的SQL进行分析

  1. 测试二,记住查看输出的SQL进行分析

  1. 测试三,记住查看输出的SQL进行分析

  1. 测试四,记住查看输出的SQL进行分析

  1. 测试五()

  1. 测试六

代码自动生成器

dao、pojo、service、controller都给我自己去编写完成!

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、 Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

测试:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java资料站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值