Mybatis中typeHandler类型转换器

本文详细介绍了Mybatis中的TypeHandler,包括其在JDBC中的作用,系统默认的typeHandler,以及如何自定义typeHandler以处理特殊类型的转换规则。文章通过定义枚举类型和实现TypeHandler接口的方式展示了自定义typeHandler的两种方法,并讲解了如何在mybatis配置中使用这些自定义转换器。
摘要由CSDN通过智能技术生成

一.typeHandler简介

      在JDBC中,需要在PreparedStatement对象中设置那些已经编译过的SQL语句的参数.执行sql后,会通过ResultSet对象获取得到数据库的数据,而这些Mybatis是根据数据的类型通过typeHandler来实现的.在typeHandler中,分为jdbcType和javaType,其中jdbcType用于定义数据库类型,而javaType用于定义java类型,那么typeHandler的作用就是承担jdbcType和javaType之间的相互转换.

        在mybtis中存在系统定义typeHandler和自定义typeHandler.mybatis会根据JavaType和数据库的jdbcType来决定采用哪个typeHandler处理这些转换规则.系统提供的typeHandler能覆盖大部分场景的要求,但是有些情况下是不够的,比如我们有特殊的转换规则.枚举类型就是这样.

二.系统自定义的typeHandler

Mybatis内部定义了许多有用的typeHandler.,这些转换器都在TypeHandlerRegistry类中注册

我们可以在这个类的构造函数中看到内置的typeHandler

三.自定义typeHandler 

1.定义一个枚举类型

首先我们需要一个枚举类型

public enum SexEnum {
	MALE(1, "男"),
	FEMALE(0, "女");

	private int id;
	private String name;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	SexEnum(int id, String name) {
		this.id = id;
		this.name = name;
	}

	public static SexEnum getSexById(int id) {
		for (SexEnum sex : SexEnum.values()) {
			if (sex.getId() == id) {
				return sex;
			}
		}
		return null;
	}
}

2.实现typeHandler接口(第一种实现自定义typeHandler的方法)

在mybatis中要自定义typeHandler,其中一种方法是实现org.apache.ibatis.type.TypeHandler接口


                
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值