mybatis 枚举
******************
示例
************
myenum 层
Sex
public enum Sex {
Male(1,"男"),FeMale(2,"女");
private Integer id;
private String name;
Sex(Integer id,String name){
this.id=id;
this.name=name;
}
public static Sex getSexById(Integer id){
for(Sex sex:Sex.values()){
if(sex.getId().equals(id)){
return sex;
}
}
return null;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.getName();
}
}
************
pojo 层
User
@Table(name = "user")
public class User implements Serializable {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
private String name;
private Integer age;
private Sex sex;
。。。。
}
************
typeHandler 层
MyTypeHandler:枚举转换类
@MappedTypes(Sex.class)
@MappedJdbcTypes(JdbcType.INTEGER)
public class MyTypeHandler implements TypeHandler<Sex> {
@Override
public void setParameter(PreparedStatement preparedStatement, int i, Sex sex, JdbcType jdbcType) throws SQLException {
preparedStatement.setInt(i,sex.getId());
}
@Override
public Sex getResult(ResultSet resultSet, int i) throws SQLException {
return Sex.getSexById(resultSet.getInt(i));
}
@Override
public Sex getResult(ResultSet resultSet, String s) throws SQLException {
return Sex.getSexById(resultSet.getInt(s));
}
@Override
public Sex getResult(CallableStatement callableStatement, int i) throws SQLException {
return Sex.getSexById(callableStatement.getInt(i));
}
}
************
配置文件
application.yml:配置扫描枚举包
mybatis:
type-handlers-package: com.example.demo.typehandler
************
controller 层
UserController
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/save")
public User save(){
User user=new User();
user.setName("瓜田李下");
user.setAge(24);
user.setSex(Sex.FeMale);
userMapper.insert(user);
System.out.println(user);
//控制台打印输出:12 瓜田李下 24 女
return user;
}
@RequestMapping("/get")
public User get(){
return userMapper.selectByPrimaryKey(5);
}
}
******************
使用测试
数据库插入数据