MyBatis-Plus系列
带你了解MyBatis-Plus的个中新特性,让你的工作更加简单轻松。拥有更多的摸鱼时光。哈哈哈哈哈
Zack_tzh
这个作者很懒,什么都没留下…
展开
-
MyBatis-Plus快速入门与进阶详解 <<目录>>
MyBatis-Plus快速入门与进阶详解最近到了换了家公司,然后公司用的就是MyBatis-Plus,由于自己也不太熟悉,就在网上找了些资料看了,发现了有个hangge.com的平台对MyBatis-Plus进行了详细的介绍。后面我会把在hangge.com平台看到的学到的总结发到CSDN平台。...原创 2020-07-21 13:45:08 · 24626 阅读 · 0 评论 -
MyBatis-Plus(一)安装配置、基本用法
安装配置、基本用法一、基本介绍 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。我们可以理解为它已经封装好了一些 CRUD 方法,我们不需要再写 xml 了,直接调用这些方法就行,类似于 JPA。MyBatis-Plus 框架结构如下:二、安装配置1、首先编辑项目的 pom.xml 文件,添加如下依赖:<!-- MyBatis-Plus依赖 --><dependency原创 2020-07-21 13:47:40 · 3464 阅读 · 0 评论 -
MyBatis-Plus(二)设置实体类对应的表名、字段名
设置实体类对应的表名、字段名一、设置关联的表名1、默认情况下,如果数据库表是使用标准的下划线命名,并且能对应上实体类的类名,我们就不需要特别去手动匹配。比如有张 user_info 表,那么会自动匹配下面这个实体类:@Datapublic class UserInfo { private Integer id; private String userName; private String passWord;}2、如果数据库中所有表都有个表名前缀,比如我们想让 t_us原创 2020-07-21 13:49:59 · 64814 阅读 · 2 评论 -
MyBatis-Plus(三)主键策略、UUID、Sequence
主键策略、UUID、Sequence 我们可以通过 @TableId 注解的 type 属性来设置主键 id 的增长策略,一共有如下几种主键策略,可根据情况自由配置。1、ASSIGN_ID(雪花算法) 如果不设置 **type** 值,默认则使用 **IdType.ASSIGN_ID** 策略(自 **3.3.0** 起)。该策略会使用雪花算法自动生成主键 **ID**,主键类型为 **Long** 或 **String**(分别对应 **MySQL** 的表字段为 **BIGINT** 和原创 2020-07-21 13:50:55 · 32406 阅读 · 0 评论 -
MyBatis-Plus(四)Mapper的CRUD接口1:基本查询
Mapper的CRUD接口1:基本查询 MyBatis-Plus 内置通用 Mapper,我们仅需要继承 BaseMapper,通过少量配置即可实现单表大部分 CRUD 操作,同时其更有强大的条件构造器,满足各类使用需求。1、准备工作创建用户信息表 user_info:CREATE TABLE `user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `原创 2020-07-21 13:52:33 · 26288 阅读 · 0 评论 -
MyBatis-Plus(五)Mapper的CRUD接口2:条件构造器
Mapper的CRUD接口2:条件构造器1、相等、不相等allEq 表示全部 eq(或个别 isNull)方法最后一个参数 null2IsNull是可选的(默认为true),为 true时则在map的value为null时调用isNull方法,为false时则忽略:allEq({id:1,user_name:“xxname”,age:null}) — 生成的sql为 —> id = 1 and user_name = ‘xxname’ and age is nullallEq原创 2020-07-22 09:37:56 · 25473 阅读 · 0 评论 -
MyBatis-Plus(六)Mapper的CRUD接口3:分页查询
Mapper的CRUD接口3:分页查询1、添加配置MyBatis-Plus 提供了物理分页的功能,使用前我们需要要进行相关的插件配置:逻辑分页与物理分页比较:逻辑分页:内存开销比较大,在数据量比较小的情况下效率比物理分页高;在数据量很大的情况下,内存开销过大,容易内存溢出,不建议使用。物理分页:内存开销比较小,在数据量比较小的情况下效率比逻辑分页还是低;在数据量很大的情况下,建议使用物理分页。@EnableTransactionManagement@Configurationpu原创 2020-07-22 09:41:06 · 26981 阅读 · 0 评论 -
MyBatis-Plus(七)Mapper的CRUD接口4:多表关联查询
Mapper的CRUD接口4:多表关联查询 Mybatis-Plus 由于内置通用 Mapper、通用 Service,无需复杂的配置即可实现单表大部分 CRUD 操作,大大减少了 MyBatis 的代码量。 但如果遇到关联属性的查询(1 对 1,1 对 n ),那么仍然需要我们通过自己写 SQL 的方式去做。这个我们可以使用注解的方式去做,也选择使用 xml 文件的方式,下面分别通过样例进行介绍。一、多表关联查询(使用注解)1、自定义 sql假设我们有如下两张表:用户表(U原创 2020-07-22 09:42:34 · 29684 阅读 · 1 评论 -
MyBatis-Plus(八)Mapper的CRUD接口5:增删改操作
Mapper的CRUD接口5:增删改操作1、新增数据insert 方法可以将一个实体对象插入到对应的数据表中:@RestControllerpublic class HelloController { @Autowired private AreaMapper areaMapper; @RequestMapping("/test") public void test(){ Area area = new Area(); ar原创 2020-07-22 09:43:12 · 25063 阅读 · 0 评论 -
MyBatis-Plus(九)Service的CRUD接口1:基本查询
Service的CRUD接口1:基本查询1、准备工作假设我们有如下用户信息表 user_info:首先创建对应的实体类 UserInfo:@Datapublic class UserInfo { private Integer id; private String userName; private String passWord; private Integer age;}接着创建 UserInfoMapper 接口,并继承 BaseMapper原创 2020-07-23 09:28:00 · 35143 阅读 · 1 评论 -
MyBatis-Plus(十)Service的CRUD接口2:分页查询
Service的CRUD接口2:分页查询1、添加配置MyBatis-Plus 提供了物理分页的功能,使用前我们需要要进行相关的插件配置:逻辑分页与物理分页比较:逻辑分页:内存开销比较大,在数据量比较小的情况下效率比物理分页高;在数据量很大的情况下,内存开销过大,容易内存溢出,不建议使用。物理分页:内存开销比较小,在数据量比较小的情况下效率比逻辑分页还是低;在数据量很大的情况下,建议使用物理分页。@EnableTransactionManagement@Configurationp原创 2020-07-23 09:31:28 · 27578 阅读 · 0 评论 -
MyBatis-Plus(十一)Service的CRUD接口3:增删改操作
Service的CRUD接口3:增删改操作1、新增数据save 方法可以将一个实体对象插入到对应的数据表中注意:插入成功后,当前插入对象在数据库中的 id 会写回到该实体中。@RestControllerpublic class HelloController { @Autowired UserInfoService userInfoService; @RequestMapping("/test") public UserInfo test(){原创 2020-07-23 09:33:07 · 27173 阅读 · 1 评论 -
MyBatis-Plus(十二)使用ActiveRecord模式进行增删改查
ActiveRecord模式进行增删改查1、ActiveRecord 模式介绍ActiveRecord(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言,对于 ActiveRecord 往往只能感叹其优雅。不过 MyBatis-Plus 也在 AR 道路上进行了一定的探索,仅仅需要让实体类继承 Model 类且实现主键指定方法原创 2020-07-23 09:34:45 · 25035 阅读 · 0 评论 -
MyBatis-Plus(十三)代码生成器
代码生成器AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。1、添加依赖要使用代码生成器,项目除了要添加数据库驱动依赖外,还需添加代码生成器以及模板引擎依赖。<!-- 数据库驱动依赖 --><dependency> <groupId>mysql</g原创 2020-07-23 09:36:17 · 24624 阅读 · 0 评论 -
MyBatis-Plus(十四)逻辑删除
逻辑删除 逻辑删除并不会真正的从数据库中将数据删除掉,而是将当前被删除的这条数据中的一个逻辑删除字段置为删除状态。比如该数据有一个字段 deleted_flag,当其值为 0 表示未删除,值为 1 表示删除。那么逻辑删除就是将 0 变成 1。1、实现步骤假设 UserInfo 表中有一个 deleted_flag 字段作为逻辑删除字段:逻辑删除字段说明:字段支持所有数据类型(推荐使用 Integer、Boolean、LocalDateTime)如果使用 LocalDateTime原创 2020-07-23 09:38:20 · 25432 阅读 · 0 评论 -
MyBatis-Plus(十五)通用枚举
通用枚举1、问题描述项目中我们通常会定义一些枚举,比如下面定义了一个性别枚举:@Getterpublic enum GenderEnum { MALE(1, "男"), FEMALE(2, "女"); private final int code; private final String descp; GenderEnum(final int code, final String descp) { this.code = code原创 2020-07-23 09:40:40 · 24924 阅读 · 0 评论 -
MyBatis-Plus(十六)字段类型处理器TypeHandler
字段类型处理器TypeHandler1、准备工作MyBatis 中的 TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换,假设我们用户表中有一个联系方式字段,类型为字符串:而对应的实体类代码如下,可以看到实体类中 contact 属性类型为 Map。由于与数据库字段类型不匹配,如果不做任何处理的话无论是查询还是插入都会报错。这里我们通过 @TableField 注解将 FastjsonTypeHandler 这个类型处理器快速注入到 mybatis原创 2020-07-24 09:12:22 · 28090 阅读 · 0 评论 -
MyBatis-Plus(十七)字段数据自动填充
字段数据自动填充1、准备工作假设我们有如下一张用户信息表,下面演示“操作类型”和“操作时间”这两个字段如何通过自动填充功能进行赋值:首先使用 @TableField 注解标记实体类中的哪些字段需要填充,这里我们选择插入或更新都自动填充:FieldFill 是一个枚举,用于指定在何种情况下会自动填充,有如下几种可选值:DEFAULT:默认不处理INSERT:插入填充字段UPDATE:更新填充字段INSERT_UPDATE:插入和更新填充字段@Datapublic clas原创 2020-07-24 09:12:49 · 25160 阅读 · 0 评论 -
MyBatis-Plus(十八)结合P6Spy进行SQL性能分析
结合P6Spy进行SQL性能分析 P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。 通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。注意:该插件有性能损耗,建议平时开发测试时使用,不建议生产环境使用。1、安装配置首先编辑项目的 pom.xml 文件,加入 p6spy 依赖:<dependency> <groupId>p6spy</groupI原创 2020-07-24 09:13:14 · 25396 阅读 · 0 评论 -
MyBatis-Plus(十九)使用乐观锁进行数据更新
使用乐观锁进行数据更新1、基本介绍乐观锁的应用场景是当要更新一条记录的时候,希望这条记录没有被别人更新。注意:目前乐观锁仅支持 updateById(id) 与 update(entity, wrapper) 方法在 update(entity, wrapper) 方法下,wrapper 不能复用!!!乐观锁实现方式如下:取出记录时,获取当前 version执行更新时,带上这个 version,即 set version = new Version where versio原创 2020-07-24 09:13:40 · 28153 阅读 · 4 评论 -
MyBatis-Plus(二十)多数据源
多数据源1、基本介绍dynamic-datasource-spring-boot-starter 是一个基于 springboot 的快速集成多数据源的启动器。其支持 Jdk 1.7+,SpringBoot 1.4.x 1.5.x 2.0.x。注意:该插件可以不依赖 MyBatis-Plus,可以独立使用。它主要用于读写分离,一主多从的环境。(当然也可以纯粹当成多库使用)一主多从的环境下数据库分工:主数据库建议只执行 INSERT、UPDATE、DELETE 操作。从数据库建议只原创 2020-07-24 09:14:02 · 25010 阅读 · 0 评论 -
MyBatis-Plus(二十一)动态表名
动态表名1、业务场景有时我们希望存储或读取数据的时候能够根据情况、或根据传入参数来动态的选择对应的表。比如我们数据库里的用户信息表通过年份拆分(使用年份做后缀)而对应的实体类是不包含年份后缀的:@Datapublic class UserInfo { private Integer id; private String userName; private String passWord; private Integer age;}2、样例代码首先原创 2020-07-24 09:14:21 · 36582 阅读 · 2 评论