MyBatisPlus TypeHandler怎么自定义字段类型转换Handler


本篇内容介绍了“MyBatisPlusTypeHandler怎么自定义字段类型转换Handler”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!因为用到的 ORM 框架是 MybatisPlus,所以首先找的就是有没有官方的支持。继而就在官网找到一个字段类型处理器,一看才发现,是学过的东西啊,只怪用的太少,知道的太少啊。然后根据这个线索继续找,就了解到 MyBatis-Plus 字段类型处理器 TypeHandler这个 TypeHandler 处于的位置,就是应用程序和数据库之间的拦截器,所有的操作,都会走一遍这里。就翻看源码,想用一个东西,最快的方式就是看一下源码的实现找到接口,看一下源码中针对已有属性是如何处理,我们仿写一份,达到我们的要求即可啊.有这么多,我们直接看一下 BaseTypeHandler 是什么样的处理逻辑,一方面 base 吗,基础吗,我们就看看基础是什么样的处理啦,另外一方面他是抽象类吗,说明它其他实现类的基类吗。看起来好像很长很多的样子:当我们去掉那些判断,精简一下:这个实现类,没什么代码,而且就是set、get ,并没有其他的一些处理逻辑什么的。那么我们也照这样的方式实现一个。先明确目免费云主机域名标,我们Mysql 中的字段类型 为 BigInt,Java程序中的属性类型为 Date,所以我们在入库的时候就是要将 Date 类型转化为 Long进行入库,在从数据库中取出来的时候,要从 Long 类型转化为 Date 映射到 JavaBean中我们直接copy上面的代码,然后进行一些更改咋一眼好像成功啦,但是我们忽略了一个问题,就是MybatisPlus怎么知道它的存在?那些默认允许进行相互进行类型转换的Handler,它在程序启动的时候,就已经被注册了。但是我们写了这个类,一方面没有被MybatisPlus知晓,另一方面还没有指明给谁使用,我们又该怎么使用?基于此,我写了一个小Demo,希望大家能够弄明白,以后遇上也能够解决一些问题实现目标:Mysql 中的表的字段为Bigint,Java程序中为 Date 类型,我们希望还是可以一如既往的使用MybatisPlus的方法,实现save、list类似这种方法的正常调用,而无需我在保存的时候,将前端传过来的数据手动转换为时间戳,再存放至数据库。查询时亦是如此数据库我只贴出了相关的代码,其余代码在源码仓库中有,别慌,家人们serviceTypeHandler 实现类实体类的修改,有两点,第一点,需要在实体类上加上value 是对应表名,autoResultMap 说的是否自动构建 resultMap 并使用,只生效与 mp 自动注入的 method,如果设置 resultMap 则不会进行 resultMap 的自动构建并注入,只适合个别字段 设置了 typeHandler 或 jdbcType 的情况第二点就是要在需要处理的字段上加上注解,class就写我们自己编写 Handler.class即可弄完上述这两点,我们还有一个问题,我之前提到一个注册,虽然我们指定了,也写好了,但实际上,还并没有注册到一个存储 TypeHandler 一个 Map 集合中去的,也就是说Mybatis 在遇到的时候,其实还是不知道它的存在的~。但其实只需要在配置文件中加一行即可,原谅我这么绕圈子,只是希望说明白这是一步步得来的type-handlers-package 后面填写的是我们Handler 存放的包路径。有这一步即可。测试插入“MyBatisPlusTypeHandler怎么自定义字段类型转换Handler”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: 怎么使用C#窗体实现酒店管理系统

本篇内容主要讲解“怎么使用C#窗体实现酒店管理系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用C#窗体实现酒店管理系统”吧!一、概述酒店管理系统是我们常说的MIS (Management Informat…

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

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/27 21:53
下一篇 03/27 21:53

相关推荐