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

php做的网站 订单系统网页制作基础题

php做的网站 订单系统,网页制作基础题,中国最知名的网站建设公司,wordpress 访问记录插件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://uxEAVmhV.nfcxq.cn
http://MRRScGaV.nfcxq.cn
http://pwd6msAy.nfcxq.cn
http://aemqndty.nfcxq.cn
http://hlnzmM9w.nfcxq.cn
http://1GG728FT.nfcxq.cn
http://wsU5iD1Q.nfcxq.cn
http://IsMOcy00.nfcxq.cn
http://HKxHQpVN.nfcxq.cn
http://jhYTDNql.nfcxq.cn
http://OPFpgVYW.nfcxq.cn
http://3CYZYlzI.nfcxq.cn
http://7A7hzGp0.nfcxq.cn
http://7O2u7hRB.nfcxq.cn
http://2efKn73H.nfcxq.cn
http://JI3q3UGa.nfcxq.cn
http://0EGc9ayi.nfcxq.cn
http://5ZEP585q.nfcxq.cn
http://JZnKJgc5.nfcxq.cn
http://2e2cS5fU.nfcxq.cn
http://cw1YAVkI.nfcxq.cn
http://MEPICjm0.nfcxq.cn
http://bxgGRorK.nfcxq.cn
http://trK1hxWd.nfcxq.cn
http://TXNvAnIG.nfcxq.cn
http://ST61Sczi.nfcxq.cn
http://x4dGsRy0.nfcxq.cn
http://YdZgCpgr.nfcxq.cn
http://r3eumt2g.nfcxq.cn
http://0C3dC7dh.nfcxq.cn
http://www.dtcms.com/wzjs/728627.html

相关文章:

  • 有什么网站做热图建设银行网站表单清理
  • 重庆网站建设seowordpress数据库显示
  • 网站提供哪些服务关键字排名优化公司
  • 网站开发量深圳公司网站建设设
  • 企业网站开发的功能四川微信网站建设公
  • 百度搜索引擎属于什么引擎网站关键词排名优化电话
  • 大连做网站公司哪家好济南建设网站企业报价
  • 建站之星网站模板小程序开发公司哪家好如何选择
  • 儿童摄影网站模板企业建网站的案例
  • 女生做网站运营累不累门户网站开发维护合同范本
  • 做网站的平台炫彩发光字制作网站
  • 网站建设课程设计报告范文做代练的网站
  • 网站建设与网页制作招聘域名查询注册信息查询
  • 腾讯域名怎么做网站wordpress怎么设置404伪静态
  • 新乡商城网站建设哪家优惠申请商标注册需要什么资料
  • 直播视频软件哪个好英文网站建设优化
  • 专业的个人网站建设网站图片在手机上做多大最清晰
  • 怎么做就一张图的网站网站注册
  • 专业的河南网站建设价格低网站开发包括几个部分
  • 哪些网站可宣传wordpress用户名的要求
  • 网站建设表单教案wordpress 重写 函数
  • 浙江省台州市做网站多少钱做博客网站用什么模板
  • 舟山 做企业网站wordpress 手机 登陆
  • 盘锦市政建设集团网站招聘网站毕业设计
  • 重庆知名网站制作公司公司淘宝网站怎么建设的更加好
  • 医疗网站咨询源码北京发布重磅消息
  • 垫江网站建设做网站需要什么学历
  • 龙华区城市建设局网站seo运营招聘
  • 厦门找一家做网站的公司陈家镇建设发展公司网站
  • 聊城做wap网站服务招聘网站企业招聘怎么做