Mybatis的动态Sql组合模式怎么实现


今天小编给大家分享一下Mybatis的动态Sql组合模式怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。当同一类型的很多对象组成一个树结构的时候,可以考虑使用组合模式,免费云主机域名组合模式涉及三个类:Component接口:定义树的各个节点的一些操作Left类:这个是树的叶子结点,实现Component接口,对于节点的管理它不去实现,只实现业务逻辑Composite类:这个是树的非叶子节点,实现Component接口,不但实现业务逻辑,同时会管理子节点,会有个Component接口的集合类来管理子节点SqlNode就是扮演组合模式中的Component角色,Sql标签会解析成SqlNode对象,MixedSqlNode类扮演组合模式的Composite角色:它也是解析标签的类它有个SqlNode的集合类,记录SqlNode对象,apply方法就是遍历集合,依次调用自己的apply()方法剩余其他SqlNode的实现类就充当组合模式的Left类了:TextSqlNode是包含${}的动态sql片段,它的apply()方法的实现:创建GenericTokenParser解析器,然后解析包含${}的sql片段,解析后保存到DynamicContext中TrimSqlNode是解析出的trim标签的对象,trim标签可以去除sql的and、逗号或者拼接where关键字等,先调用SqlNode 的apply方法 ,然后调用FilteredDynamicContext的applyAll()方法进行前后缀的处理,FilteredDynamicContext在DynamicContext包装了一层,利用了装饰者模式,除了DynamicContext的存储解析结果和参数功能外还能进行前后缀的处理IfSqlNode是解析出if 标签、when标签的类,ExpressionEvaluator是解析工具类,test记录了if标签的test表达式,apply()方法中ExpressionEvaluator工具类解析test表达式,返回true之后调用具体SqlNode的apply()方法StaticTextSqlNode是非动态的sql片段,apply()方法直接把sql片段追加到DynamicContext的sqlBuilder属性中以上就是“Mybatis的动态Sql组合模式怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: Java怎么实现断点下载服务端与客户端

这篇“Java怎么实现断点下载服务端与客户端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java怎么实现断点下载服务端与客户端”文章吧。首先,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/30 20:42
下一篇 03/30 20:51

相关推荐