Mybatis之——MybatisPlus&&代码生成器&&MybatisX插件
Mybatis Plus
目标:
- 了解mybatisplus的特点
- 能够掌握mybatisplus快速入门
- 能够掌握mybatisplus常用注解
- 能够掌握mybatisplus常用的增删改查
- 能够掌握mybatisplus自动代码生成
1 MybatisPlus概述
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网:https://mybatis.plus/ 或 https://mp.baomidou.com/
版本
1 | <dependency> |
2 快速入门
SpringBoot 整合 MyBatis-Plus,并实现根据Id查询功能。
1 | 1、数据库环境准备 |
2.1 数据库环境准备
1 | SET NAMES utf8mb4; |
2.2 创建工程,引入场景依赖
1 | <parent> |
2.3 编写DataSource相关配置
1 | # datasource |
2.4 编码
实体类:
1 | package com.itheima.sh.pojo; |
@TableName(“tb_user”) : 如果数据库的表名和实体类一致时可以省略
编写mapper:
1 | package com.itheima.sh.mapper; |
启动类增加 @MapperScan 注解
1 | package com.itheima.sh; |
2.5 测试
1 | package com.itheima.sh; |
3 CRUD
入门程序中 Mapper 继承 BaseMapper:
3.1 新增
3.1.1 方法解析
3.1.2 测试
1 |
|
3.1.3 主键生成策略-@TableId
作用:标识数据库的主键列以及主键生成的策略
使用:添加在实体类的主键对应的成员属性
主键生成策略探究:
1 |
|
3.1.4 普通列注解- @TableField
作用:
1)@TableField(“user_name”) 指定映射关系
以下情况可以省略:
- 名称一样
- 数据库字段使用_分割,实体类属性名使用驼峰名称
2)忽略某个字段的查询和插入 @TableField(exist = false)
3.1.5 具体使用
1 | /** |
3.2 删除
3.2.1 根据id删除
1 | int count = userMapper.deleteById(8L); |
3.2.2 根据id集合批量删除
1 | List ids = new ArrayList(); |
3.2.3 根据map构造条件,删除
1 | Map<String, Object> map = new HashMap<>(); |
3.3 更新
1 |
|
4 查询
4.1 分页查询
配置 拦截器
1 | package com.itheima.sh.config; |
查询
1 | /** |
分页查询的几种方式 :
1 |
|
例子:
1 | IPage<SpuDTO> querySpuDTOByList(IPage<SpuDTO> page, Boolean saleable, |
4.2 条件构造器查询
1 | /** |
4.2.1 基础查询
通过 QueryWrapper 指定查询条件
1 | eq( ) : 等于 = |
1 |
|
4.2.2 逻辑查询 or
1 | or( ) :让紧接着下一个方法用or连接 |
1 |
|
4.2.3 模糊查询 like
1 | like |
1 | /** |
4.2.4 排序查询
1 | orderBy |
1 |
|
4.2.5 select:指定需要查询的字段
1 |
|
4.2.6 分页条件查询
1 |
|
4.2.7 LambdaQueryWrapper
目的:消除代码中的硬编码
1 |
|
4.2.8 条件删除
1 | /** |
4.2.9 条件 update
1 | /** |
5 service 封装
Mybatis-Plus 为了开发更加快捷,对业务层也进行了封装,直接提供了相关的接口和实现类。我们在进行业务层开发时,可以继承它提供的接口和实现类,使得编码更加高效
1 | - 1. 定义接口继承IService |
接口
1 | public interface UserService extends IService<User> { |
实现类封装
1 |
|
编写Controller,使用PostMan测试
1 | package com.itheima.sh.controller; |
6 逆向工程-代码生成器
6.1 代码生成说明
当有一个新的业务实现时,对接口的功能实现上,我们通常来说需要构建下面的信息:
PO类
数据库表和实体类的映射 Java Bean。
DAO层
需要编写接口 Mapper ,接口 Mapper 需要去继承 MP 中的 BaseMapper 接口。
Service层
编写 Service 层接口和实现类。业务接口需要去继承 MP 中的 IService,业务实现类需要继承 MP 中的 ServiceImpl 和 实现业务接口。
Controller层
编写 Controller 并标注 Spring MVC 中的相关注解。
从上面的各类代码中可以放下,代码都是模板性的,如果用手工copy、修改的方式来实现,太烦人也没效率,而这时就是代码生成器小展身手的时候,使用代码生成器生成模板性的代码,减少手工操作的繁琐,集中精力在业务开发上,提升开发效率。
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Mapper接口、Entity实体类、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
6.2 代码生成
导入资料中已提供完整的代码
或者是gitee开源链接:https://gitee.com/jitheima/mp_generator.git
完整代码:
以后在项目中使用,在这里生成后,可以把代码拷贝到对应的目录里使用,在整个黑马头条项目开发阶段,使用了当前生成的mapper和实体类。
7 MybatisX插件
MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。
安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx
搜索并安装。
功能:
- Java 与 XML 调回跳转
- Mapper 方法自动生成 XML