天天看点

mybatis plus 插入生成id_SpringBoot中整合MyBatis-Plus

MyBatis 框架相信大家都用过,虽然 MyBatis 可以直接在 xml 中通过 SQL 语句操作数据库,很是灵活。但正其操作都要通过 SQL 语句进行,就必须写大量的 xml 文件,很是麻烦。于是 MyBatis-Plus 应运而生,作为 MyBatis 的增强工具,更是为我们开发效率得到了质的飞跃。

一、简介

1、MyBatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

官方文档:mybatis - MyBatis 3

2、MyBatis-Plus

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

官方文档:简介 | MyBatis-Plus

二、开发前戏

1、引入 MyBatis-Plus

在 pom.xml 文件中引入 MyBatis-Plus 所需依赖

<!-- 
           

freemarker 作为 MyBatis-Plus 自动生成代码时作为模板使用,还可选用 velocity 作为模板

<
           

本次我们选用 freemarker 作为模板

2、配置信息

在 application.yml 文件中,配置 mybatis-plus 的信息

# 
           

我们主要配置了:

  • xml 文件的存放位置
  • 实体类的存放位置
  • 开启驼峰转换原则
  • 开启缓存
  • 打印 sql 日志
  • id 自增策略,有多种策略,如下:
/**
           

MyBatis-Plus 默认的是推特的“雪花算法”,但是这样生成的主键 id 会比较长,本次我们选择数据库自增策略

我们还需要在项目启动类加上

@MapperScan
           

扫描我们 mapper 包下面的文件,有时你会发现不在启动类当前包下面的文件无法扫描,于是加上第二个注解,扫描其他文件

3、自动生成代码类

import 
           

我们需要改变的就是:

  • 数据库的连接信息,地址,用户,密码
  • controller、service、mapper、xml 等文件的命名规则
  • 生成文件 controller、service、mapper、xml 文件的存放位置
  • 数据库与实体类之间的一些策略配置等

三、开发进行中

1、创建数据表

我们创建一个用户信息表 user_info

mybatis plus 插入生成id_SpringBoot中整合MyBatis-Plus
drop 
           

2、生成代码

我们利用刚刚创建的自动生成代码类,生成关于 user_info 数据表的 controller、service、mapper、xml、entity 等文件

生成方法:

  • 运行自动生成代码类中的 main 方法
  • 在控制台输入表名 user_info

生成的文件就自动放在我们配置的包下面

3、代码鉴赏

UserInfo.java

文件

import 
           
  • @TableName(“sys_user_info”) ,标注表名
  • Model,继承了 Model 抽象类,并实现了序列化
  • @ApiModelProperty(value = “ID”),注释,这是在自动生成代码类中配置了 // 开启 swagger2 模式 gc.setSwagger2(true);才会生成的
  • @TableId(value = “id”, type = IdType.AUTO),表明了主键自增策略
  • @TableField(“account”),标注了数据库中对应的字段
  • @TableLogic,逻辑删除字段,表示我们在调用删除方法时,数据库并不会物理删除,而是被改变状态,查询的时候,默认不查询已被删除的数据,可以配置逻辑删除值,默认0未删除,1已删除
  • pkVal(),方法用于插入返回自增id
UserInfoMapper.java

文件

import 
           

继承了 BaseMapper 抽象类,使得有了 CRUD 的基本方法

UserInfoMapper.xml

文件

<?
           
  • namespace,命名空间,指明这个 xml 文件属于哪一个 mapper 文件
  • BaseResultMap,结果集,我们可以定义不同的结果集,来返回我们所需要的数据
UserInfoService.java

文件

import 
           
  • 继承了 IService 接口,使得有了 CRUD 的方法
  • 相比 mapper,还有了批量操作的方法
UserInfoServiceImpl.java

文件

import 
           
UserInfoController.java

文件

import 
           

四、开始使用

1、分页查询

我们在 service 的实现类中写一个 分页查询用户的方法,listUserInfo()

@Override
           

我们传入了查询条件:根据用户名称查询,再根据用户的注册时间倒序排序,最后分页查询

  • iPage.getTotal(),就得到了总数量,为 long 型
  • iPage.getRecords(),就得到了结果集,为 List 集合

我们还可以使用 lambda 的方式来写查询条件,例如:

queryWrapper
           

这样,就能避免写数据库字段的时候写错了

2、分页插件

注意

:这时候,我们查询数据,发现分页并没有起作用,我们还需要配置 MyBatis-Plus 的分页插件

创建 MybatisPlusConfig.java 文件

package 
           

这时候,我们的分页就正常了,分页默认从1开始,所以不用考虑page = (page-1)*limit 才能使用,1-20的数据,就传入 1,20,20-40的数据就传入 2,20 就可以了

其它的增删改查的方法也是使用很方便的,如果涉及到多表联查,我们还是在 xml 文件中写 sql 吧

五、总结

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 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 操作智能分析阻断,也可自定义拦截规则,预防误操作

如您在阅读中发现不足,欢迎留言!!!

mybatis plus 插入生成id_SpringBoot中整合MyBatis-Plus

作者:Asurplus、

链接: https:// blog.csdn.net/qq_400657 76/article/details/107546643?utm_medium=distribute.pc_category.none-task-blog-hot-9.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-9.nonecase&request_id=

来源:CSDN博客

继续阅读