枚举typeHandler

在绝大多数情况下,typeHandler因为枚举而使用,MyBatis已经定义了两个类作为枚举类型的支持,这两个类分别是:
  •EnumOrdinalTypeHandler。
  •EnumTypeHandler。
因为它们的作用不大,所以在大部分情况下,我们都不用它们,不过我们还是要稍微了解一下它们的用法。

EnumOrdinalTypeHandler

EnumOrdinalTypeHandler是按MyBatis根据枚举数组下标索引的方式进行匹配的,也是枚举类型的默认转换类,它要求数据库返回一个整数作为其下标,它会根据下标找到对应的枚举类型

EnumTypeHandler

EnumTypeHandler会把使用的名称转化为对应的枚举,比如它会根据数据库返回的字符串“MALE”,进行Enum.val-ueOf(SexEnum.class,"MALE");转换

自定义枚举typeHandler

代码清单4-23:SexEnumTypeHandler

package com.xc.util.typehandler;

import com.xc.enumerate.SexEnum;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import org.apache.ibatis.type.TypeHandler; import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; @MappedTypes(SexEnum.class)
@MappedJdbcTypes(JdbcType.INTEGER)
public class SexEnumTypeHandler implements TypeHandler<SexEnum> { @Override
public void setParameter(PreparedStatement ps, int i, SexEnum parameter, JdbcType jdbcType) throws SQLException {
ps.setInt(i, parameter.getId());
} @Override
public SexEnum getResult(ResultSet rs, String columnName) throws SQLException {
int id = rs.getInt(columnName);
return SexEnum.getSexById(id);
} @Override
public SexEnum getResult(ResultSet rs, int columnIndex) throws SQLException {
int id = rs.getInt(columnIndex);
return SexEnum.getSexById(id);
} @Override
public SexEnum getResult(CallableStatement cs, int columnIndex) throws SQLException {
int id = cs.getInt(columnIndex);
return SexEnum.getSexById(id);
}
}

package com.xc.enumerate;

public enum SexEnum {

    MALE(1, "男"), FEMALE(0, "女");
private int id;
private String 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;
} 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;
} }

mybatis typeHandler类型转换器

mybatis 自定义typeHandler

最新文章

  1. android 利用Handler触发另一个activity方法
  2. Framer – 将视觉搞转换为更真实的动态原型
  3. 错误记录,找不到sqlite dll
  4. ASP.NET相关技术整理
  5. Java基础知识强化之集合框架笔记75:哈希表
  6. C#_ajax_demo
  7. Linux Kernel ‘drivers/staging/wlags49_h2/wl_priv.c’本地缓冲区溢出漏洞
  8. Java equals 和 hashcode 方法
  9. CSDN专家吐槽实录
  10. XJOI1424解压字符串
  11. php+ajax+jq
  12. CSS3 基础知识[转载minsong的博客]
  13. Python 中的单例模式
  14. Python实现工厂模式
  15. XamarinSQLite教程在Xamarin.Android项目中使用数据库
  16. selector的小箭头去除
  17. MongoDB入门 和nodejs操作
  18. 【代码审计】LaySNS_v2.2.0 System.php页面存在代码执行漏洞分析.
  19. Python面试题之装饰器漫谈
  20. FreeOpcUa compile

热门文章

  1. Mybatis 使用PageHelper封装通用Dao分页方法
  2. Canvas 总结,到第4章 canvas图形变换
  3. k8s-yaml
  4. 2.1 什么是C++
  5. 【angularJS】学习笔记
  6. driud 异常
  7. Function.apply.bind()与Function.apply.bind()
  8. Lock接口的认识和使用
  9. 大数据技术之kettle(1)——安装
  10. cookie 的HttpOnly 和 Secure 属性