mysql 枚举文件_Java枚举自动转换存入MySQL

框架SpringBoot MyBatis TypeHandler

主要使用mybatis中的TypeHandler接口

在java中使用如下枚举:

public enum Status {

DELETED(-1, "已删除"),

NORMAL(1, "正常");

private final int code;

private final String text;

public int code() {

return code;

}

public String text() {

return text;

}

}

java中的entity:

public class DemoEntity{

private Long id;

private String name;

private Integer status;

}

如果我在java中使用枚举不用处理的情况下,存入到数据之前需要手动使用Status.code()获取到枚举的code,然后放入entity,才能获取通过mybatis存入数据库

如果我想在DemoEntity 中直接使用Status枚举,而且mybaits还能够正常存入,这个时候就需要用的TypeHandler

首先把entity修改为:

public class DemoEntity{

private Long id;

private String name;

private Status status;

}

然后创建一个handler实现TypeHandler接口,注意类上方的注解

@MappedTypes(value = Status.class) 这个一定要加

@MappedTypes(value = Status.class)

public class StatusHandler implements TypeHandler {

@Override

public Status getResult(ResultSet rs, String column) throws SQLException {

return Status.codeOf(rs.getInt(column));

}

@Override

public Status getResult(ResultSet rs, int i) throws SQLException {

return Status.codeOf(rs.getInt(i));

}

@Override

public Status getResult(CallableStatement cs, int i) throws SQLException {

return Status.codeOf(cs.getInt(i));

}

@Override

public void setParameter(PreparedStatement ps, int i, Status param, JdbcType jdbcType) throws SQLException {

ps.setByte(i, (byte)param.code());

}

}

因为我使用的是SpringBoot 所有我在springboot 中的properties文件中添加mybatis.type-handlers-package属性

mybatis.type-handlers-package=你的handler所在的包

测试一下:插入和查找都OK

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页