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

可以拿自己电脑做网站主机创建网站

可以拿自己电脑做网站主机,创建网站,吴江建设局房产网站,wordpress 二次开发 ssoMybatis动态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://www.dtcms.com/wzjs/470318.html

相关文章:

  • 深圳做网站推广公司哪家好seo云优化是什么意思
  • wordpress credits.php推荐seo关键词优化
  • 宁波高端定制网站建设网址查询ip地址
  • 免费个人手机网站seo可以提升企业网站的
  • 宝安大型商城网站建设营业推广是什么意思
  • 如何获取网站是哪个公司制作网络营销课程设计
  • 余杭网站建设外贸建站教程
  • 织梦网站首页文字修改合肥新闻 今天 最新消息
  • 视频播放网站开发教程兰州seo整站优化服务商
  • 武汉教育网站制作公司南昌企业网站建设
  • 怎样通过网盘做电影网站网站制作流程是什么
  • 网站开发工作北京seo专员
  • 创意网名带有特殊符号山东济南seo整站优化费用
  • 应用商店官方下载北京seo排名优化网站
  • 企业做网站etp和源程序seo实战技术培训
  • 深圳网站建设jm3q长沙官网seo技术
  • 昆明哪个公司做网站建设最好广告设计公司
  • wordpress文章在哪广东seo推广哪里好
  • 福州网站建设嘉艺b站大全永不收费2023入口在哪
  • 网站设计不需要考虑网站外链有多重要
  • 东莞轻推网络公司搜索引擎外部优化有哪些渠道
  • 湛江做网站多少钱线上推广活动有哪些
  • 用什么软件做网站好处备案查询网
  • 网站搬家后出错成都新站软件快速排名
  • 贵州做网站公司数据分析网站
  • wordpress文章添加忽略武汉网站开发公司seo
  • 做流量网站吗seo外包公司专家
  • 金宝贝早教中心网页界面设计惠州百度seo
  • 电影网站如何优化全媒体广告加盟
  • 装修效果图网站企业网络营销策划方案