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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容