【Mybatis】-自定义Enum映射

本文详细介绍了在Mybatis中如何处理自定义枚举的映射问题。当数据库中的枚举值与Java实体类中的枚举不匹配时,不能直接使用EnumTypeHandler或EnumOrdinalTypeHandler。文章讲解了如何创建自定义枚举类型控制器,通过在mybatis配置文件中注册该控制器,实现在映射过程中将数据库中的枚举值正确地映射到Java对象上。
摘要由CSDN通过智能技术生成

前言

在使用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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值