mybatis-plus获取数据后用实体接收0(禁用)和1(启用),在实体里进行判断转换
时间: 2024-02-02 14:05:18 浏览: 134
如果你的实体中的某个字段在数据库中保存的是0或1,但是你想在实体中将其转换为禁用或启用,可以使用java中的枚举类型。
首先,创建一个枚举类型,示例如下:
```java
public enum StatusEnum {
DISABLE(0, "禁用"),
ENABLE(1, "启用");
private int code;
private String desc;
StatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public String getDesc() {
return desc;
}
public static StatusEnum getByCode(int code) {
for (StatusEnum status : values()) {
if (status.getCode() == code) {
return status;
}
}
return null;
}
}
```
然后,在实体类中将对应的字段设置为枚举类型,示例如下:
```java
public class User {
private Long id;
private String name;
private StatusEnum status;
// getter/setter
}
```
最后,在Mybatis-Plus的配置文件中添加类型转换器,将数据库中的0或1转换为枚举类型。示例如下:
```xml
<configuration>
<typeHandlers>
<typeHandler javaType="com.xxx.StatusEnum" handler="com.xxx.StatusEnumTypeHandler"/>
</typeHandlers>
</configuration>
```
其中,com.xxx.StatusEnumTypeHandler是一个实现了TypeHandler接口的类型转换器,用于将0或1转换为StatusEnum类型。示例如下:
```java
public class StatusEnumTypeHandler implements TypeHandler<StatusEnum> {
@Override
public void setParameter(PreparedStatement ps, int i, StatusEnum parameter, JdbcType jdbcType) throws SQLException {
ps.setInt(i, parameter.getCode());
}
@Override
public StatusEnum getResult(ResultSet rs, String columnName) throws SQLException {
int code = rs.getInt(columnName);
return StatusEnum.getByCode(code);
}
@Override
public StatusEnum getResult(ResultSet rs, int columnIndex) throws SQLException {
int code = rs.getInt(columnIndex);
return StatusEnum.getByCode(code);
}
@Override
public StatusEnum getResult(CallableStatement cs, int columnIndex) throws SQLException {
int code = cs.getInt(columnIndex);
return StatusEnum.getByCode(code);
}
}
```
这样,在查询数据库时,Mybatis-Plus会自动将0或1转换为StatusEnum类型,并将其设置到实体类中。在使用实体类时,可以直接使用枚举类型的常量值。例如:
```java
User user = userMapper.selectById(1L);
if (user.getStatus() == StatusEnum.ENABLE) {
// do something
}
```
阅读全文