mybatis自定义Enum映射
前言
在使用mybatis作为orm映射时往往会涉及到枚举值的映射,如果mysql数据库中的数据使用的是enum类型,那么映射到系统中对应的值也应该是一个枚举字段,mybatis提供了枚举值的自动映射,分别是EnumTypeHandler和EnumOrdinalTypeHandler两个控制类来实现的,是针对的普通枚举来映射的,但是对于自定义的复杂枚举这两种根本就无法处理,需要自定义一个枚举类型控制器,如下将会详细介绍自定义枚举控制器的方法。
映射具体实现
程序准备
数据结构
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT '',
`store` int(11) DEFAULT '0',
`sex` enum('M','F','N') DEFAULT NULL,
`is_enable` smallint(6) DEFAULT '0',
`utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
需要映射的实体类
package com.jesse.modules.test;
import com.jesse.modules.test.enums.EnableEnum;
import com.jesse.modules.test.enums.SexEnum;
import java.util.Date;
public class TestModel {
private int id;
private String name;
private Integer store;
private Date utime;
private Date ctime;
private SexEnum sex;
private EnableEnum isEnable;
public Integer getStore() {
return store;
}
public void setStore(Integer store) {
this.store = store;
}
public Date getUtime() {
return utime;
}
public void setUtime(Date utime) {
this.utime = utime;
}
public Date getCtime() {
return ctime;
}
public void setCtime(Date ctime) {
this.ctime = ctime;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Stri