快上网建站品牌

13518219792
  • 首页
  • 关于我们
    • 如何选择
    • 选择理由
  • 案例作品
    • 网站建设
    • 优化推广
    • 微信开发
    • 电商托管
  • 服务项目
    • 网站建设
    • 移动端/APP
    • 微信/小程序
    • 技术支持
    • 其它服务
  • 建站知识
    • 成都网站建设
    • 成都做网站
    • 成都网站设计
  • 网站售后
    • 成都网站运营
    • 成都网站维护
    • 成都网站推广
  • 客服中心
  • 全国分站

Mybatis实战之TypeHandler高级进阶

上篇文章分享了在项目实战中自定义Mybatis的TypeHandler来处理枚举类型。文章结尾也指出了美中不足之处,那就是每次都需要指定我们自定义的枚举TypeHandler。 随着项目枚举类型的增多,每次都要写一遍这个会令人很反感。那么,本次我们就来解决这一痛点。

在明水等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、网站设计 网站设计制作按需策划,公司网站建设,企业网站建设,成都品牌网站建设,全网整合营销推广,外贸营销网站建设,明水网站建设费用合理。

思路分析

  1. 上篇文章讲到, mybatis有默认的处理枚举类型的TypeHandler,因此,我们要将我们自定义的枚举TypeHandler注册进入Mybatis。
  2. 注册完我们自定义的TypeHandler后,还得告诉Mybatis只要一遇到我们指定的枚举类型(上篇的DisplayedEnum)就用自定义的枚举TypeHandler(上篇为EnumTypeHandler)进行转换。由于Mybatis在启动时就会通过TypeHandlerRegistry进行注册,即建立JdbcType, JavaType, TypeHandler三者之间的关系, 因此,这意味着在Mybatis启动时我们也需要通过TypeHandlerRegistry将我们的所有的枚举类型(JavaType)与自定义的枚举TypeHandler(EnumTypeHandler)建立联系。

为了方便大家理解, 贴上Mybatis中的TypeHandlerRegistry的相关部分源码:

 Mybatis实战之TypeHandler高级进阶

实战

SqlSessionFactoryBean

由于我们项目使用了Spring, 是用Spring集成的Mybatis(废话,大家都是这么干的)。Spring通过SqlSessionFactoryBean来初始化启动Mybatis。 因此,我们应该在它身上下手,然而,一切并不是那么顺利。

查看了一下SqlSessionFactoryBean的源码,发现SqlSessionFactoryBean并没有任何地方可以让我们切入, 进而来调用TypeHandlerRegistry进行注册我们的枚举。 更令人蛋疼的是其所有属性全是private, 这下不仅AOP切入不行,连通过继承偷懒都不行了。

作罢,咱只有老老实实的重写一遍SqlSessionFactoryBean的代码了(copy还不简单)。

DefaultSqlSessionFactoryBean

代码量比较多,就只贴关键代码了。步骤如下:

  1. DefaultSqlSessionFactoryBean继承SqlSessionFactoryBean。
  2. 将SqlSessionFactoryBean中的代码全部copy到DefaultSqlSessionFactoryBean。
  3. 调用以下方法。

Mybatis实战之TypeHandler高级进阶

切记, 以上代码要在这个代码之前执行:

Mybatis实战之TypeHandler高级进阶

因为, xmlMapperBuilder.parse()方法会开始解析我们所有的所有mapper.xml的配置文件了,这时候会把resultMap也解析了,这就会导致我们自定义的TypeHandler不生效。

切记! 切记

最后

以上,代码算是完工了,记得在Spring的配置文件中, 将SqlSessionFactoryBean替换为我们的DefaultSqlSessionFactoryBean。 不然我们的活就是白干了。

接下来,就可以开始浪了, 之前我们需要这样写:


 ...
 
 ...

而现在,我们可以不写typeHandler了。


 ...
 
 ...

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持创新互联!


网站名称:Mybatis实战之TypeHandler高级进阶
本文路径:http://csdahua.cn/article/gjgpjd.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

其他资讯

  • 怎么绑域名 有域名怎么绑定到自己的主机
  • 域名等级怎么判断 域名等级怎么判断的
  • linux下快速补全命令 linux 补充快捷键
  • 包含简述sap系统配置的词条
  • 图片水印提取java代码 图片水印提取java代码

行业动态

企业网站建设的重要性!

现在虽然是移动互联网时代,但企业网站依然重要,包含PC站点,移动站。可以说企业网站关系企业的未来发展和前途,尤其对中小企业更是如此,一些中小企业老板,对自己的名片很在乎,因为这是个门面。...

服务项目

  • 网站建设

    查看详情
  • 移动端/APP

    查看详情
  • 微信/小程序

    查看详情
  • 技术支持

    查看详情
  • 其它服务

    查看详情
  • 更多服务项目

    用我们的专业和诚信赢得您的信赖,从PC到移动互联网均有您想要的服务!

    获取更多

联系吧 在百度地图上找到我们

电话:13518219792

如遇占线或暂未接听请拨:136xxx98888

业务咨询 技术咨询 售后服务
网站制作
绵阳网站制作
重庆网站制作
成都网站制作
网站制作
网站建设
手机网站建设
网站建设推广
成都企业网站建设
成都网站建设公司
网站设计
广安网站设计
阿坝网站设计
成都网站设计
梓潼网站设计
联系我们
电话:13518219792
邮箱:631063699@qq.com
地址:成都青羊区锦天国际1002号
网址:www.csdahua.cn

微信二维码

  • 友情链接
  • 画册设计制作
  • 成都康明发电机维护
  • 温江网站建设
  • 成都网站制作
  • 眉山网站建设
  • 营山发电机维修
  • app开发公司
  • 成都发电机租赁
  • 成都小程序开发
  • 宏鑫宇康

Copyright © 2002-2023 www.csdahua.cn 快上网建站品牌 QQ:244261566 版权所有 备案号:蜀ICP备19037934号

  • 在线咨询
  • 13518219792
  • 微信二维码

  • 移动版官网