Mybatis自动生成的Example类详解

更新时间:2023-06-28 09:22:26 阅读: 评论:0

Mybatis⾃动⽣成的Example类详解
整合:
1、
2、
⼀、mapper接⼝中的⽅法解析
mapper接⼝中的函数及⽅法
⽅法功能说明int countByExample(UrExample example) thorws SQLException按条件计数int deleteByPrimaryKey(Integer id) thorws SQLException按主键删除int deleteByExample(UrExample example) thorws SQLException按条件查询String/Integer inrt(Ur record) thorws SQLException插⼊数据(返回值为ID)Ur lectByPrimaryKey(Integer id) thorws SQLException按主键查询ListlectByExample(UrExample example) thorws SQLException按条件查询
爱情的歌曲ListlectByExampleWithBLOGs(UrExample example) thorws
SQLException 按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为⼆进
制的才会产⽣。
int updateByPrimaryKey(Ur record) thorws SQLException按主键更新
int updateByPrimaryKeySelective(Ur record) thorws SQLException按主键更新值不为null的字段
int updateByExample(Ur record, UrExample example) thorws
SQLException
按条件更新
int updateByExampleSelective(Ur record, UrExample example)
thorws SQLException
肖邦音乐按条件更新值不为null的字段
⼆、example实例解析
mybatis的逆向⼯程中会⽣成实例及实例对应的example,example⽤于添加条件,相当where后⾯的部分下关沱茶
xxxExample example = new xxxExample();
硫酸的相对原子质量是多少
Criteria criteria = new Example().createCriteria();
⽅法功能说明example.tOrderByClau(“字段名 ASC”);添加升序排列条件,DESC为降序example.tDistinct(fal)去除重复,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.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⽂件中的这个lect,可以看到, 它对我们组装的SQL先判断了是否需要去重,如果我们前⾯调⽤了example.tDistinct(true),那在这个地⽅就会加上distinct关键字,往下⾛,它使⽤include标签组装了⼀个查询所有列的动态SQL,其实就是把所有列名添加进去了,如下图:
再往下,重点来了,它在内部封装了⼀个“_parameter”,就是我们的参数,判断参数如果不为空,则再加⼀段sql,⼀段动态组装我们添加的条件的sql⽚段,如下图
在这个⽚段中mybatis通过遍历Criteria对象来获取我们组装的条件集合,为什么我们的条件会在Criteria中呢?不是⽤Example类组装的吗?莫慌,我们回头看⼀下,⼩伙伴们会发现我们前⾯所说的
Example类的⽅法除了排序和去重之外,其他的都需要先createCriteria()才能添加条件,什么情况呢?看图你就知道了
成都有啥好吃的
可以看到,我们的Example类中还有三个静态内部类 这三个内部类各司其职,⾸先,我们调⽤ateCriteria()来创建了⼀个GeneratedCriteria对象的⼦类对象Criteria,然后我们组装条件时Criteria对象调⽤⽗类⽅法进⾏组装,都组装到了Griterion对象集合中,也就是⽗类的criteria属性。也就是说除了排序和去重之外,我们每组装⼀个条件都在Griterion对象集合中添加了⼀个元素,然后在xml⽂档中遍历这个集合,判断这个集合的每个属性是否为空,不为空则说明我们组装的有对应的条件,然后添加条件到sql中。如果觉得有点迷糊的话,看看下⾯的图也许你会明⽩点
世界十大火山创建 Criteria对象
细胞衰老的特征
组装条件的⽅法

本文发布于:2023-06-28 09:22:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1057823.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:条件   添加   组装
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图