MyBatisPlus 入门教程,这篇很赞
在之前的文章中我们经常使用MybatisPlus进行增删改查,可能有些小伙伴对mybatisplus不是很熟悉,今天特意出了一般入门级的教程,我自己也是一边学习一边写的,有什么地方写的不好的地方请留意指出。
1|0快速入门的小例子
1|1准备数据库和测试数据
1|2配置数据库信息
在项目的resources
目录下新建application.yml
文件,内容如下:
1|3新建实体类型
在项目根目录下新建一个包,名字为Entity,然后,新建一个名字为User.java
的实体类型。
注意:@Data注解能在编译是自动生成get和set方法。
1|4新建Mapper包,并创建UserMapper接口类。
在项目的根目录下新建一个名为Mapper
包,并创建UserMapper.java接口
类,继承MyBatis-Plus
的BaseMapper
基类。
注意:MyBatisPlus的BaseMapper基类需要存入一个泛型,这个泛型是要操作的实体类型。
1|5并在启动类型添加扫描路径
1|6新建测试方法
查询所有的用户信息
2|0通用Mapper
2|1新增(Create)方法
在测试目录下新建一个测试类,名字为InserTest.java
,内容如下:
注意:insert方法需要的参数是一个实体,返回参数是影响行数
2|2常用注解
@TableName
描述:表名注解
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
value | String | 否 | "" | 表名 |
schema | String | 否 | "" | schema |
keepGlobalPrefix | boolean | 否 | false | 是否保持使用全局的 tablePrefix 的值(如果设置了全局 tablePrefix 且自行设置了 value 的值) |
resultMap | String | 否 | "" | xml 中 resultMap 的 id |
autoResultMap | boolean | 否 | false | 是否自动构建 resultMap 并使用(如果设置 resultMap 则不会进行 resultMap 的自动构建并注入) |
excludeProperty | String[] | 否 | {} | 需要排除的属性名(@since 3.3.1) |
@TableId
描述:主键注解
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
value | String | 否 | "" | 主键字段名 |
type | Enum | 否 | IdType.NONE | 主键类型 |
type的类型包括以下几种:
- AUTO:数据库ID自增。
- NONE:无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)
- INPUT:insert前自行set主键值
- ASSIGN_ID:分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口
IdentifierGenerator
的方法nextId
(默认实现类为DefaultIdentifierGenerator
雪花算法) - ASSIGN_UUID :分配UUID,主键类型为String(since 3.3.0),使用接口
IdentifierGenerator
的方法nextUUID
(默认default方法)
TableField
描述:字段注解(非主键)
详细的注解请查看MybatisPlus的官网
2|3排查非表字段的三种方式
- transient:不参与序列化
- static
- TableField(exist=false)
3|0MybatisPlus查询方法(Retrieve)
3|1普遍查询方法
selectById
selectBatchIds
selectByMap
注意:columnMap中的键是数据库中的字段,不是实体类型的属性。
3|2以条件构造器为参数的查询方法
selectList
3|3select中字段不全出现的处理方法
3|4条件构造器中condition作用
condition作用是构造的条件中如何为true就加入,为false就不加入条件。
从AbstractWrapper<T, String, QueryWrapper<T>>
的源码可以看到很多方法都有condition
参数,它是一个布尔型的参数,意思就是是否将该sql
语句(像in()
、like()
)加在总sql
语句上,如下图所示。
3|5创建条件构造器是传入实体对象
默认情况下条件是等值,如下图,如果需要设置为like
,需要在实体属性添加注解。
condition参数可以自定义。
3|6条件构造器中allEq用法
个别参数说明:
params
:key
为数据库字段名,value
为字段值
null2IsNull
: 为true
则在map
的value
为null
时调用 isNull 方法,为false
时则忽略value
为null
的
- 例1:
allEq({id:1,name:"老王",age:null})
--->id = 1 and name = '老王' and age is null
- 例2:
allEq({id:1,name:"老王",age:null}, false)
--->id = 1 and name = '老王'
3|7其他条件构造器的使用方法
selectMaps
有些时候返回的结果不需要是整个实体类的属性,可能只需要某几个字段的数据,如下:
selectObjs
只返回第一列的数据。
selectCount
查询总记录数
3|8Lambda条件构造器
三种方法创建lambda
条件构造器:
LambdaQueryWrapper<User> lambda = ``new ``QueryWrapper<User>().lambda()``; ``LambdaQueryWrapper<User> userLambdaQueryWrapper = ``new ``LambdaQueryWrapper<User>()``; ``LambdaQueryWrapper<User> lambdaQuery =Wrappers.<User>``_lambdaQuery_``()``;
3|9使用条件构造器的自定义SQL
MP版本需要大于3.0.7
首先在UserMapper类中自定义方法。如下:
注意:${ew.customSqlSegment}名字是固定写法。
编写测试方法
3|10分页查询
MP分页插件实现物理分页
在项目目录中新建一个包,名字为config
,并创建一个类,名字为MyBatisPlusConfig
,内容如下:
编写测试实现方法
3|11AR模式、主键策略和基本配置
AR模式
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。简单来说,就是通过实体类操作数据库的增删改查。
使用前提需要实体类继承Model类。如下:
新建测试类
3|12主键策略
MP定义了6中主键策略。
局部主键策略实现
在实体类主键通过TableId注解方式。
全局主键策略实现
在配置文件中配置全局主键ID。
3|13MP基本配置
详细信息查看官网中的配置
__EOF__

本文链接:https://www.cnblogs.com/alanlin/p/16253742.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:didiplus,转载请注明原文链接:https://www.cnblogs.com/alanlin/p/16253742.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?