wx.checkjsapi是写在config里面吗_Mybatis3系列 - 7. mybatis-config的typeHandlers属性

接下来先全局的说一下MyBatis的mybatis-config的typeAliases属性说明。

configuration 的映射文件(根据定义顺序说明)

  • properties 属性
  • settings 设置
  • typeAliases 类型别名
  • typeHandlers 类型处理器
  • objectFactory 对象工厂
  • objectWrapperFactory MyBatis对基本类型, 基本对象map和集合的封装.
  • reflectorFactory 反射模块工厂
  • plugins 插件
  • environments 环境配置
  • databaseIdProvider 数据库厂商标识
  • mappers 映射器

typeHandlers属性

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。对于这个属性来说, 就是说JdbcType的

从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。

typeHandlers属性的实现基本上都在: org.apache.ibatis.type这个包下, 具体可以查看这个自己了解更多更详细的源码详情。也希望我能尽量的能够详细的说明使用方式.

具体jar包名为如下图:

a946e9e84d91f5f48ad21f6f47de84a3.png

处理的流程为:

使用jdbc进行数据读取, 在读取的同时, 根据类型处理器进行加工处理成Java类型. 并显示其对应的数据.

说白了, 也就是用来完成JavaType和JdbcType之间进行转换.

不管是mybatis-config中任何一个配置都是可以通过代码进行检索查询并看到对应的数据的。

所以, 编写一段代码进行查看Mybatis内置的typeHandle.

代码如下:

1fecb9789977bf7b9f47f265fbf8b5c8.png

执行之后, 我们可以看到当前版本是有40个默认实现, 大家可以执行查看一下,

4d7c3836cfcc10f1b0ce159eccf0c97e.png

打开上面的每个文件都看一下, 你会发现自己自定义一个类型转换器很容易。

public class TypeHandler extends BaseTypeHandler

所以简单的办法直接继承一个 org.apache.ibatis.type.BaseTypeHandler

然后重写相应的方法。使用默认的Integer来进行展示。

bd7a55ed9dc6588613d12faee2aaeb09.png

看到这里你会看到个很熟悉的类:PreparedStatement 所以先学习基础的Jdbc才是学习框架的第一步,经常说的地基打捞才能建造高楼大厦。

但是需要注意的是,默认实现是官方的所以会自动加载对应的信息,如果我们自己进行实现,你需要告诉Mybatis,我实现了一个新的类型处理器,所以可以通过以下方法进行告知它

具体代码最后会给出github地址。

这里我们写一个测试代码进行查看, 在实现里面加了一些输出一些字符串。

460953d7a04fae9b548d2e0f878796dd.png

执行测试代码

1b89dfeaae3f1911ff3382df29c1a83d.png

测试结果如下:

19a1c67780c80a6cc16c746f10f8ab04.png

从输出来看, 我们已经使用我们自定义的类型转换器. 一般情况下我们使用默认的类型转换器足够我们使用.

aca43d16c47cef4360cc7923586f4a47.png

根据我们mybatis-config.dtd来看. 除了使用typeHandler 还可以使用package.

配置方式如下:

这里不在详细讲解这种方式, 等到后面的mybatis-mapper的时候在来详细的讲解这个.

全部代码已经上传到Github

GitHub地址: https://github.com/xymiao/mybatis3

本篇代码地址: https://github.com/xymiao/mybatis3/tree/master/mybatis3_06_mybatis_config_typehandlers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值