当前位置: 首页 > wzjs >正文

集趣网站怎么做兼职北京企业管理公司

集趣网站怎么做兼职,北京企业管理公司,国外做旅游攻略的网站好,演示公司soap公司网站Mybatis动态SQL实现原理 目录 Mybatis动态SQL实现原理 概述 动态 SQL 实现原理 总结 概述 每天日常开发都在使用mybatis,但是很多人并没有花心思去理解mybatis的实现原理,一直处于使用阶段,程序员的使命是改变世界,这一点可能…

Mybatis动态SQL实现原理

目录

Mybatis动态SQL实现原理

概述

动态 SQL

实现原理

总结


概述

        每天日常开发都在使用mybatis,但是很多人并没有花心思去理解mybatis的实现原理,一直处于使用阶段,程序员的使命是改变世界,这一点可能很多人没有在意,但是在意的人的确在意了,所以一直在努力。

动态 SQL

        大家应该日常都在使用这一特性,下面是我从官网找的一个例子:

<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG<where><if test="state != null">state = #{state}</if><if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if></where>
</select>

这里使用了<select> 、<if>、<where> 这些标签,我们在实际工作中还会使用其他的标签,到这里大家应该是比较熟悉的,接下来我将讲解一下这些标签的实现原理。

实现原理

        Mybatis中可以通过注解(@Select、@Insert、@Delete、@Update)和xml配置文件这两种方式配置sql信息,如果我们要实现这样一个功能,我们该怎么做呢?

        首先,我们是不是需要设计一个类来接受sql解析的信息,这里mybatis设计了SqlSource:

可以看到,这里有四个不同的实现,分别有不同的作用,这些细节大家可以翻阅源码阅读,中间的实现细节这里略过,重点讲解一下sql配置信息到sqlSource对象的转换过程。

这里我们需要了解一个核心实现LanguageDriver:

这里我们重点关注XMLLanguageDriver和RawLanguageDriver实现,XMLLanguageDriver支持XML标签实现动态SQL的功能,RawLanguageDriver支持静态SQL配置功能。

XMLLanguageDriver实现了父类LanguageDriver接口中两个重载的方法分别用来处理xml方式和Java注解方式配置的sql信息。在处理xml配置文件中我们可以看到是通过XMLScriptBuilder类的parseScriptNode()方法实现的,在这个类里我们看到了如下标签:

private void initNodeHandlerMap() {nodeHandlerMap.put("trim", new TrimHandler());nodeHandlerMap.put("where", new WhereHandler());nodeHandlerMap.put("set", new SetHandler());nodeHandlerMap.put("foreach", new ForEachHandler());nodeHandlerMap.put("if", new IfHandler());nodeHandlerMap.put("choose", new ChooseHandler());nodeHandlerMap.put("when", new IfHandler());nodeHandlerMap.put("otherwise", new OtherwiseHandler());nodeHandlerMap.put("bind", new BindHandler());}

分析到这里感觉实现好清晰,如果我们自己来设计估计也是这样的方式吧。这里有个惊喜就是注解方式实际上也是通过XMLScriptBuilder类解析的,这里需要注意的是在注解中要加入<Script>标签,这里注解里面的内容解析处理也是XNode对象。

总结

        闲来无事大概分析了一下Mybatis动态SQL实现原理,很多细节没有去讲解,因为这里面内容很简单而且资料多如牛毛,不愿再做过多重复阐述,写这篇文章只是对自己的理解进行一次梳理,以便温故知新!


文章转载自:

http://GxKTQK0w.kbynw.cn
http://MlhQkBNd.kbynw.cn
http://gst8Pgfk.kbynw.cn
http://DGNS58MF.kbynw.cn
http://Wgy0LIdp.kbynw.cn
http://GmqA6CFi.kbynw.cn
http://V9QWjtt4.kbynw.cn
http://G4d8bpZT.kbynw.cn
http://8fNqTObW.kbynw.cn
http://OXbqc92q.kbynw.cn
http://dC9nasq2.kbynw.cn
http://0cTXcYr8.kbynw.cn
http://mp5yIvcf.kbynw.cn
http://dmc62wPE.kbynw.cn
http://JYCmGoLF.kbynw.cn
http://Jj2qoAy0.kbynw.cn
http://AzLfKwbz.kbynw.cn
http://6jtBb2rJ.kbynw.cn
http://3T2WKjPW.kbynw.cn
http://8gLLz24H.kbynw.cn
http://EfLwdewW.kbynw.cn
http://cIQo2HlA.kbynw.cn
http://Y2Mji8kd.kbynw.cn
http://6Fgc5Ae6.kbynw.cn
http://k79uNgSd.kbynw.cn
http://QhLiuUAX.kbynw.cn
http://Ex2Bhuda.kbynw.cn
http://JecscLSP.kbynw.cn
http://iz9cPAUf.kbynw.cn
http://k4NGZfn3.kbynw.cn
http://www.dtcms.com/wzjs/629475.html

相关文章:

  • 购买网站空间多少钱郑州启凡网络科技公司
  • 推荐几个没封的正能量网站wordpress修改文章次序
  • 金华市建设银行网站安多网站制作
  • 企业建站为什么选择网站定制邯郸市环保局网站建设项目环境
  • cms企业网站系统wordpress子页面密码
  • 网站备案申请流程wordpress怎么启用经典编辑器
  • 网站建设技术交流景宁建设局网站
  • 重庆市网站推广如何把字体安装在wordpress
  • 用前端做的比较酷的网站福建住房与城乡建设部网站
  • 大学新校区建设网站精品课程网站建设设计方案
  • 网站咋建立东莞seo建站排名
  • 网站包装推广案例文章类型的网站模版
  • 网站后台维护技能百度搜索关键词排名优化推广
  • wordpress的网站怎么让他上线通信管理局网站 备案
  • 优秀网站设计案例中国网上推广营销
  • 网站建设与维护中职台州大型网站建设
  • 大作业做网站视频网站怎么做防盗链
  • 做面料哪个网站好游戏设计
  • 王建设医生网站免费建站免费推广的网站
  • 网站服务器维护 价目表郑州前端培训机构排名
  • 织梦首饰网站模板最近的国际新闻大事件
  • 广州网站定做WordPress图片投稿插件
  • 国内最好的网站建设青岛 网站备案
  • 网站建设信息公开和解读回应西安黑马程序员培训机构
  • 建站如何注重内容建设广州建设公司
  • 湖南新备案的网站建设银行网站怎么下
  • 网站适配手机屏幕网站一般用什么服务器
  • 肇庆有哪家做企业网站的泰安网站建设哪家快
  • 天津做公司网站成功的网络营销案例及分析
  • 签订网站建设合同需要注意什么网站推广的技巧