mybatis plus学习笔记 条件构造器 二

在以前,我们写原声sql的时候,在where条件后会有很多的条件语句,但是baseMapper有没有书写sql的方式,所以就引入了条件构造器,条件构造器可以拼接许多复杂的sql。废话不多说,截图代码。
mybatis plus学习笔记 条件构造器 二_第1张图片
上图是一个分页查询,查看第一页,每页显示两行,然后后面我们就用EntityWrapper的方式对sql条件进行拼接,需求给的是年龄大于20到60之间,地址在天津的,between就是年龄的范围,eq就是等于的意思,这里要注意一点,在拼接sql写的字段名都是与数据库一致的,如果与数据库不一致,就报错。另外还要补充一点。
在这里插入图片描述
Wrapper是一个抽象类,其中有三个类继承了它
mybatis plus学习笔记 条件构造器 二_第2张图片
其中Condition与EntityWrapper差不多,都继承了Wrapper,所以用EntityWrapper还是Condition都是差不多的。
下面用用selectList方法。
mybatis plus学习笔记 条件构造器 二_第3张图片
上图中查询的条件是找出性别女名字包括姚字或者地点是天津的。or()方法前面的和后面的隔离,or上面的是一起的,下面是一起的。我们看一下sql语句
在这里插入图片描述
发送的sql语句where子句后的查询条件都包含在一个括号内。我们再来看看orNew()。
mybatis plus学习笔记 条件构造器 二_第4张图片
在这里插入图片描述
看的出来用了orNew() 它把or的前面用括号包起来,后面也用括号包起来,这也就是or与ornew唯一的区别,但是他们的结果是一样的。
mybatis plus学习笔记 条件构造器 二_第5张图片
上图就是按条件更新操作。
mybatis plus学习笔记 条件构造器 二_第6张图片
上图按名称和地名删除,条件构造器
在这里插入图片描述
上图是删除发出的sql
下面我们试试order by 排序
mybatis plus学习笔记 条件构造器 二_第7张图片
上图中我们查询性别为男同志,并且根据sid进行升序排序,orderBy默认就是对指定的字段进行升序排序。
在这里插入图片描述
上图就是我们做升序排序发送的sql语句是没有一点问题的。
下面我们对sid做降序排序。
mybatis plus学习笔记 条件构造器 二_第8张图片
上图就是我们对age,年龄进行降序排序,用的是orderDesc,但是这个方法需要Collection参数,所以我们用asList将String数组转化为List对象作为参数传入,下面我们查看结果。
在这里插入图片描述
在这里插入图片描述
这个是发送的sql语句,是没有问题的,结果也是没有问题的。
下面我们用一下last()方法,这个方法接收一个字符串,然后将这个字符串拼接到这条sql语句的最后。
mybatis plus学习笔记 条件构造器 二_第9张图片
上图就是用last方法对sql的最后添加的东西。我们看一下发送的sql。
在这里插入图片描述
在这里插入图片描述
可以看到我们last方法里添加的sql在sql的最后被添加了进来,对age做降序排序,只要第一条到第三条。可以看到结果也是没有问题的。
mybatis plus学习笔记 条件构造器 二_第10张图片
但是翻看源码发现源码的注释里写道手动拼接到最后又sql注入的风险,所以用last是有一定的安全代价的。
下面我们来用一用同样继承了了Wrapper抽象类的Condition类。
mybatis plus学习笔记 条件构造器 二_第11张图片
用Condition注意他不像EntityMapper那样new对象,而是调用create对象就能创建一个对象。
mybatis plus学习笔记 条件构造器 二_第12张图片
可以看到用Condition调用create方法后,后面的条件方法都属于Wrapper抽象类的,所以与EntityWrapper是一样的了,下面我们查看结果:
在这里插入图片描述
在这里插入图片描述
可以看到sql语句发送的没错,结果也是没有问题的。
下面是所有条件构造器的列表介绍
mybatis plus学习笔记 条件构造器 二_第13张图片
mybatis plus学习笔记 条件构造器 二_第14张图片

你可能感兴趣的:(mybatis,plus)