大牢们,我记得有个工具类,可以在实体类某个字段加个注解,转义成中文。比如性别字段,库里存的是1或2,在性别字段加个注解会自动把1转成男,2转成女,
有次见了一次,没记住
实体类字段自动转移快捷方式
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
凌霜残雪 2024-10-25 18:15关注你提到的这种功能在Java中可以通过多种方式实现,其中一种常见的方法是使用自定义注解结合AOP(面向切面编程)或者利用某些框架提供的特性来完成。例如,在Spring框架中,可以使用@Value注解配合自定义的PropertyEditor或者Converter来实现类似的功能。
但是,更具体地,您可能是指的是MyBatis框架中的@TypeHandler注解。这个注解允许开发者指定一个类型处理器,用于处理特定类型的值在数据库和Java对象之间的转换。对于您的需求,可以创建一个自定义的类型处理器来将数据库中的数字(如1, 2)转换为对应的中文字符串(如"男", "女")。
下面是一个简单的例子,展示如何使用MyBatis的@TypeHandler来实现这一功能:
定义类型处理器
首先,创建一个类型处理器类,该类需要实现TypeHandler接口,并重写其方法以提供自定义的转换逻辑。import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class GenderTypeHandler extends BaseTypeHandler<String> { @Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { if ("男".equals(parameter)) { ps.setInt(i, 1); } else if ("女".equals(parameter)) { ps.setInt(i, 2); } else { throw new IllegalArgumentException("未知的性别值: " + parameter); } } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { int value = rs.getInt(columnName); return value == 1 ? "男" : (value == 2 ? "女" : null); } @Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { int value = rs.getInt(columnIndex); return value == 1 ? "男" : (value == 2 ? "女" : null); } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { int value = cs.getInt(columnIndex); return value == 1 ? "男" : (value == 2 ? "女" : null); } }在实体类中使用
然后,在实体类的字段上使用@TypeHandler注解,指定刚刚创建的类型处理器。import org.apache.ibatis.type.TypeHandler; public class User { private Integer id; @TypeHandler(GenderTypeHandler.class) private String gender; // 这里存储的是“男”或“女” // getters and setters }通过这种方式,当从数据库查询数据时,性别字段将会自动根据数据库中的数值转换为相应的中文表示;同样地,当向数据库插入或更新数据时,也会将中文的性别转换为对应的数字值。
如果觉得有用打赏支持一下,你的支持是我最大的动力,造福更多打码人解决 无用评论 打赏 举报