MyBatis-plus

MyBatis-Plus(简称MP)是一个 MyBatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
MP会内置集成部分SQL方法,可以直接使用,而不用一个SQL需求对应一个Mybatis下的一个SQL条目。

  1. pom.xml 引入Mybatis-Plus的jar坐标,覆盖Spring-MyBatis
    MyBatis-plus_第1张图片

  2. 修改application.yml配置文件
    MyBatis-plus_第2张图片
    开启AR功能(ActiveRecord)领域模型

    1. 实体类开启AR (同时开启Dao层AR)
      继承MP特殊类Model
      Model隶属于:com.baomidou.mybatisplus.extension.activerecord.Model
      T泛型:当前的实体类
      在这里插入图片描述

      由于Model类的存在,那么就可以获得MP封装了基于当前表(泛型)的基础方法

      默认会寻找当前数据源下,和实体类名相同的表
      同时实现主键序列方法
      MyBatis-plus_第3张图片
      MP的大部分方法都是依赖主键来生成SQL的,所以需要指定标识实体类中的主键

    MyBatis-plus_第4张图片
    测试实体类AR功能,查看MP提供的封装方法
    MyBatis-plus_第5张图片
    被关键字Model修饰的就是MP的内置方法
    例子:查询一个条目
    MyBatis-plus_第6张图片
    例子:增加一个条目
    MyBatis-plus_第7张图片
    例子:修改一个条目
    MyBatis-plus_第8张图片
    例子:删除一个条目
    MyBatis-plus_第9张图片
    例子:如果MyBatis和MyBatis-plus方法重复
    在这里插入图片描述
    MyBatis方法优先

    实体类名和表名不相同,在实体类上添加一个注释
    在这里插入图片描述
    MP和AR的关系:
    MP是Mybatis-Plus的简称,是一个完整框架体系;AR是指一个模型类对应一个关系型数据库中的一张表;AR只是MP的一个功能而已。

  3. Dao层开启AR
    继承特殊类BaseMapper
    BaseMapper隶属于:com.baomidou.mybatisplus.core.mapper.BaseMapper
    T泛型:当前的实体类

在这里插入图片描述
测试clientDao,查看被封装的方法
MyBatis-plus_第10张图片
被关键字BaseMapper修饰的就是MP的内置方法
例子:插入一个对象
MyBatis-plus_第11张图片
例子:查询昵称为“用户”的所有条目
在这里插入图片描述
QueryWrapper 被称为条件构造器

  1. Service层开启AR(同时开启ServiceImpl的AR)
    . 在这里插入图片描述
    ClientService继承IService类
    IService隶属于:com.baomidou.mybatisplus.extension.service.IService
    泛型Product,对应一个表
  2. ServiceImpl开启AR
    . MyBatis-plus_第12张图片
    ClientServiceImpl正常实现ClientService接口
    继承特殊类ServiceImpl
    ServiceImpl隶属于com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
    T1: 继承了MP组件的Dao层
    T2:实体类,也是为了引向到一个表
    由于T1的存在,因此无需再自动装载dao层

ServiceImpl修改
MyBatis-plus_第13张图片
ServiceImpl的AR功能,是依赖Dao的AR功能来实现
MyBatis-plus_第14张图片
例子 批量插入:
设置主键自增
在这里插入图片描述
saveBatch
MyBatis-plus_第15张图片
建议保留MyBatis 关键字字段
insert,update,delete

saveOrUpdateBatch 根据主键,批量插入或更改

MyBatis-plus_第16张图片
总结:
1. 实体类,Dao层,Service层开启AR后,可以使用MP的内置方法,减少了SQL代码的重复书写。
2. 底层实现是hibernate框架结构。用类和方法来实现SQL功能,由于类和方法的局限性,复杂SQL需求,还是需求原始的SQL来完成
3. MyBatis-Plus不是为了取代MyBatis,是在其基础上做的功能升级,但无法替代,他们双生的魂斗罗。
4.代码的生成,

你可能感兴趣的:(mybatis)