@TableField(typeHandler = EnumTypeHandler.class)

通过mybatisPlus自带方法保存对象)




package com.liu.susu.enums.handler;/*** description** @author susu* @date 2022-12-01**/
public interface MyBaseEnum {Object getCode();String getDesc();}
package com.liu.susu.enums.handler;import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedTypes;import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;/*** 值枚举转换处理器* @param 枚举类型*/
@MappedTypes({MyBaseEnum.class})
public class ValueEnumTypeHandler & MyBaseEnum> extends BaseTypeHandler {private Class type;public ValueEnumTypeHandler(Class type) {if (type == null) {throw new IllegalArgumentException("Type argument cannot be null");}this.type = type;}@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, MyBaseEnum parameter, JdbcType jdbcType)throws SQLException {
// ps.setInt(i, parameter.getCode());ps.setObject(i, parameter.getCode());}@Overridepublic E getNullableResult(ResultSet rs, String columnName) throws SQLException {int code = rs.getInt(columnName);return rs.wasNull() ? null : codeOf(code);}@Overridepublic E getNullableResult(ResultSet rs, int columnIndex) throws SQLException {int code = rs.getInt(columnIndex);return rs.wasNull() ? null : codeOf(code);}@Overridepublic E getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {int code = cs.getInt(columnIndex);return cs.wasNull() ? null : codeOf(code);}private E codeOf(int code){try {return codeOf(type, code);} catch (Exception ex) {throw new IllegalArgumentException("Cannot convert" + code + "to" + type.getSimpleName() + "by code value.", ex);}}private static & MyBaseEnum> E codeOf(Class enumClass, Object code) {E[] enumConstants = enumClass.getEnumConstants();for (E e : enumConstants) {if (e.getCode() == code) {return e;}}return null;}} 
package com.liu.susu.enums;import com.baomidou.mybatisplus.annotation.EnumValue;
import com.liu.susu.enums.handler.MyBaseEnum;public enum SexEnum implements MyBaseEnum {BOY("1","男孩"),GIRL("2","女孩");// @EnumValueprivate String code;private String desc;SexEnum(String code, String desc) {this.code = code;this.desc = desc;}@Overridepublic String getCode() {return this.code;}@Overridepublic String getDesc() {return this.desc;}}
ValueEnumTypeHandler):@TableField(typeHandler = ValueEnumTypeHandler.class)private SexEnum sex;

下一篇:机器学习3判断机器算法的性能