MyBatis-Plus入门(杂)

1-1 MyBatis与JPA对比

image.png

image.png

image.png

1-2 MyBatis-Plus简介

image.png

image.png

image.png

image.png

2-1 通用传统模式简介及通用mapper新增方法

image.png
配置文件
image.png
通用mapper方法大纲
image.png

2-2 常用注解

1.@TableName 表名映射

数据库名不同,在类上增加@TableName("mp_user")

2.@TableId 主键映射

主键ID的驼峰一般无法识别,在主键属性上增加@TableId

3.@TableField 字段映射

属性与字段名不相同,在属性上增加@TableField("name")

当表名为 mp_user 时,在不改变 实体类的名字的情况下,通过添加 @TableName(“表名mp_user”)的方式来指定对应的数据库表名,以此解决在不编写sql语句的情况下,实体类的名字与数据库表名不一致而导致无法进行表操作的问题。
image.png

2-3 排除非表字段的三种方式

第一种:
添加 transient 标识 某一字段不参与实例化过程,一般用于过渡字段,在数据库表中没有对应的字段,如果直接添加而进行实例化的排除, 会被自动进行映射到数据库表中,而由于没有对应的字段,会报错。


image.png

第二种:
将要排除的字段声明为静态变量,手动创建 对应的静态GET/SET 方法,静态的属性的静态方法只能使用类进行调用,此时,实例化的过程会将该静态字段排除掉,在调用 MP 进行映射时不会被映射进去


image.png

第三种:
使用 @TableField(exist=false)标识当前变量不是数据库表中的字段,这种情况下,该属性不会被映射到数据库中


image.png

3-1 普通查询

普通查询方法:
1、List<T> selectBatch(List<T> ids)
2、List<T> selectByMap(Map<key,value> map)
PS:map中的key为数据库中的列名(如果输入的是实体类中的属性名会报错)、value是列对应的值


image.png
selectById 普通查询
selectBatchIds 多个值查询 Arrays.asList()
selectByMap 条件查询 Map的key为字段,生成的语句为where name= ? and age=?

selectBatchIds(@Param(Constants.COLLECTION)Collection<? extends Serializable> idList);
根据id集合获取对象集合list
Arrays.asList(id1,id2)
将list集合参数进行forEach输出:
userList.forEach(System.out::println);


image.png

3-2 条件构造器查询

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

3-3 select不列出全部字段

选择查询表中的字段

select(字段1,字段2) 选择字段返回,select可以写在queryWrapper后面:


image.png

select排除某些字段

去除某些列名的数据返回
.select(User.class, info->!info.getColumn().equals("create_time")&&
!info.getColumn().equals("email"));
数据返回create_time和email


image.png

3-4 condition作用

like(condition,"字段",value) 判定哪个字段不为空时,进行判定,
与原mybatis中的
<if test="focus_count != null ">
是一个道理,那么在这里,其实跟if test 比较起来,也差不多,
if test 需要写两遍 上判定,下判定
同样的在mp中的写法 写得也算简短了


image.png

如果判定isNotEmpty为true,则进行该字段的对比查询
如果返回false,说明这个字段为空,不进行按此字段查询


image.png

3-5 实体作为条件构造器构造方法的参数

image.png

实体对象中设置名字的模糊查询
不想设定等值搜索,将这里设定注解 condition.


image.png

年龄小于的注入


image.png

3-6 AllEq用法

allEq的用法


image.png

image.png

allEq第二个参数设定false,值为null的忽略掉


image.png

忽略如果键为name时的查询参数


image.png

3-7 其他使用条件构造器的方法

以map的形式,比实体类的优势在于选择查询时,不会有那么多null的字段键返回.
image.png

image.png

selectOne只能查返回数据中仅一条的


image.png
image.png
image.png

3-8 lambda条件构造器

Lambda表达式查询方式
三种Lambda表达式创建方式


image.png

使用lambda表达式进行like和lt的搜索
防止编译的错误


image.png

使用Lambda查询多条件
提供了防误写功能,写错就报错,防止编译的错误


image.png
image.png

4-1 自定义sql

自定义SQL的两种方式:

第一种: 使用自定义注解 的方式实现,在 dao 层的方法上使用@Select (“sql 语句”)的方式编写 sql 语句,会自动映射到数据库表中
image.png
第二种: 使用创建 mapper.xml 的方式来创建 配置文件,通过在配置文件中 创建 sql 语句,并配置 namespace 名称空间,指向有效的 dao 层,从而实现数据的映射
image.png
使用第二种需要对application.yml文件进行配置
image.png

4-2 分页查询

分页查询 :
分页插件配置类: 创建 MybatisPlusConfig类,注入到 Spring中进行管理


image.png

分页查询的第一种方式:
使用userMapper.selectPage(page,data);返回结果为 实体类 javabean


image.png

分页查询的第二种方式:
使用userMapper.selectPage(page,data);返回结果为 Map<String,Object>集合类


image.png
image.png

image.png

5-1 更新方法

updateById


image.png

updateWrapper


image.png

updateWrapper2


image.png

updateWrapper3


image.png

updateWrapperLambda


image.png

updateWrapperLambdaChain


image.png

5-2 删除方法

deleteById


image.png

deleteByMap


image.png

deleteBatchIds


image.png

deleteByWrapper


image.png

6-1 AR模式

AR模式的使用:

条件1:
必须存在对应的原始mapper并继承Model<User> 泛型类,并配置相应类注解,
同时申明序列号 serialVersionUID = 1L


image.png

条件2:
在 mapper 接口 中要 继承 BaseMapper<Object.class> 泛型类


image.png

6-2 基本配置

创建mybatis-config.xml 配置文件


image.png

image.png
image.png

7-1 通用service

service所有方法


image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容