Mybatis自动生成的Example类详解

整合:
1、Mybatis自动生成的Example类的使用与解析
2、MyBatis的Mapper接口以及Example的实例函数及详解

一、mapper接口中的方法解析

mapper接口中的函数及方法

方法功能说明
int countByExample(UserExample example) thorws SQLException按条件计数
int deleteByPrimaryKey(Integer id) thorws SQLException按主键删除
int deleteByExample(UserExample example) thorws SQLException按条件查询
String/Integer insert(User record) thorws SQLException插入数据(返回值为ID)
User selectByPrimaryKey(Integer id) thorws SQLException按主键查询
ListselectByExample(UserExample example) thorws SQLException按条件查询
ListselectByExampleWithBLOGs(UserExample example) thorws SQLException按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生。
int updateByPrimaryKey(User record) thorws SQLException按主键更新
int updateByPrimaryKeySelective(User record) thorws SQLException按主键更新值不为null的字段
int updateByExample(User record, UserExample example) thorws SQLException按条件更新
int updateByExampleSelective(User record, UserExample example) thorws SQLException按条件更新值不为null的字段

二、example实例解析

mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分
xxxExample example = new xxxExample();
Criteria criteria = new Example().createCriteria();

方法功能说明
example.setOrderByClause(“字段名 ASC”);添加升序排列条件,DESC为降序
example.setDistinct(false)去除重复,boolean型,true为选择不重复的记录。
criteria.andXxxIsNull添加字段xxx为null的条件
criteria.andXxxIsNotNull添加字段xxx不为null的条件
criteria.andXxxEqualTo(value)添加xxx字段等于value条件
criteria.andXxxNotEqualTo(value)添加xxx字段不等于value条件
criteria.andXxxGreaterThan(value)添加xxx字段大于value条件
criteria.andXxxGreaterThanOrEqualTo(value)添加xxx字段大于等于value条件
criteria.andXxxLessThan(value)添加xxx字段小于value条件
criteria.andXxxLessThanOrEqualTo(value)添加xxx字段小于等于value条件
criteria.andXxxIn(List<?>)添加xxx字段值在List<?>条件
criteria.andXxxNotIn(List<?>)添加xxx字段值不在List<?>条件
criteria.andXxxLike(“%”+value+”%”)添加xxx字段值为value的模糊查询条件
criteria.andXxxNotLike(“%”+value+”%”)添加xxx字段值不为value的模糊查询条件
criteria.andXxxBetween(value1,value2)添加xxx字段值在value1和value2之间条件
criteria.andXxxNotBetween(value1,value2)添加xxx字段值不在value1和value2之间条件

三、Example查询流程

其实很简单,跟一下代码就能知道大概的流程,不信我们来跟一下,这里以我的代码为例
在这里插入图片描述

如图,我们可以看到,我这里查询产品标签的时候就直接封装标签实体类对应的Example类,先创建一个Example类,然后组装条件,调用dao接口查询
在这里插入图片描述

如图,我们调的就是这个dao接口,参数就是example类 ,然后dao调用mybatis对应的xml文件

在这里插入图片描述

如图,最终调的就是这个xml文件中的这个select,可以看到, 它对我们组装的SQL先判断了是否需要去重,如果我们前面调用了example.setDistinct(true),那在这个地方就会加上distinct关键字,往下走,它使用include标签组装了一个查询所有列的动态SQL,其实就是把所有列名添加进去了,如下图:
在这里插入图片描述

再往下,重点来了,它在内部封装了一个“_parameter”,就是我们的参数,判断参数如果不为空,则再加一段sql,一段动态组装我们添加的条件的sql片段,如下图
在这里插入图片描述

在这个片段中mybatis通过遍历Criteria对象来获取我们组装的条件集合,为什么我们的条件会在Criteria中呢?不是用Example类组装的吗?莫慌,我们回头看一下,小伙伴们会发现我们前面所说的Example类的方法除了排序和去重之外,其他的都需要先createCriteria()才能添加条件,什么情况呢?看图你就知道了

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到,我们的Example类中还有三个静态内部类 这三个内部类各司其职,首先,我们调用example.createCriteria()来创建了一个GeneratedCriteria对象的子类对象Criteria,然后我们组装条件时Criteria对象调用父类方法进行组装,都组装到了Griterion对象集合中,也就是父类的criteria属性。也就是说除了排序和去重之外,我们每组装一个条件都在Griterion对象集合中添加了一个元素,然后在xml文档中遍历这个集合,判断这个集合的每个属性是否为空,不为空则说明我们组装的有对应的条件,然后添加条件到sql中。如果觉得有点迷糊的话,看看下面的图也许你会明白点

在这里插入图片描述

创建 Criteria对象
在这里插入图片描述

组装条件的方法

在这里插入图片描述
在这里插入图片描述

调用的方法其实就是将条件封装到了Griterion对象集合中
在这里插入图片描述

最后在xml中遍历添加

这就是完整的Example类的组装SQL流程。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值