mybatis 字典转换 typehandler 查字典
时间: 2023-09-03 21:03:06 浏览: 84
MyBatis 字典转换 TypeHandler 是一种用于处理数据库中字段和 Java 实体属性之间的转换的机制。它允许开发人员在数据库中存储枚举值或其他常量,并在 MyBatis 查询时将其转换为相应的 Java 对象。
通常,在数据库设计中,我们会将某些字段的取值限制为预定义的有限选项,通常以整数或字符串形式存储在数据库中。然而,在 Java 代码中,我们更倾向于使用枚举类型或其他自定义对象来表示这些选项。
为了解决数据库字段和 Java 对象之间的转换问题,MyBatis 提供了 TypeHandler 接口。该接口定义了将字段值转换为 Java 对象和将 Java 对象转换为字段值的方法。开发人员可以根据自己的需求实现该接口并注册自己的 TypeHandler。
当 MyBatis 执行查询时,如果遇到了定义了 TypeHandler 的字段,它将使用相应的 TypeHandler 对象来处理字段的转换。类型转换可以是双向的,也就是说可以将 Java 对象转换为数据库字段,以及将数据库字段转换为 Java 对象。
字典转换的一个典型应用场景是将数据库中的整数值转换为对应的枚举类型。通过实现自定义的 TypeHandler,开发人员可以将数据库表中的整数字段映射为相应的枚举对象,从而在程序中更方便地使用枚举值。这种转换可以在查询结果映射时自动进行,也可以在参数设置时手动进行。
总之,MyBatis 字典转换 TypeHandler 是一项非常实用的功能,它允许我们在数据库和 Java 对象之间进行灵活的转换,使程序开发更加方便和高效。
相关问题
mybatis 自定义TypeHandler
MyBatis中自定义TypeHandler的步骤如下:
1. 创建一个类并实现`org.apache.ibatis.type.TypeHandler`接口,或者继承`org.apache.ibatis.type.BaseTypeHandler`类,后者已经实现了TypeHandler接口,可以方便地进行自定义。
\[1\]
2. 在MyBatis的配置文件中,通过`<typeHandlers>`标签配置自定义的TypeHandler。
\[2\]
3. 如果希望将自定义的TypeHandler应用于全局,可以在配置文件中设置`mybatis-plus.type-handlers-package`属性,指定TypeHandler所在的包路径。
\[3\]
通过以上步骤,就可以在MyBatis中实现自定义的TypeHandler了。
#### 引用[.reference_title]
- *1* *3* [mybatis 自定义 TypeHandler](https://blog.csdn.net/Lou_Lan/article/details/120863688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [MyBatis自定义类型处理器 TypeHandler](https://blog.csdn.net/lmb55/article/details/90380309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
springboot mybatis plus typeHandler
Spring Boot和MyBatis Plus一起使用时,可以使用TypeHandler来处理数据库中的自定义类型和Java对象之间的转换。
首先,您需要创建一个自定义的TypeHandler类来处理特定类型的转换。例如,假设您有一个名为CustomType的自定义类型,您可以创建一个CustomTypeHandler类来处理它的转换。
```java
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 CustomTypeHandler extends BaseTypeHandler<CustomType> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, CustomType customType, JdbcType jdbcType) throws SQLException {
preparedStatement.setString(i, customType.toString());
}
@Override
public CustomType getNullableResult(ResultSet resultSet, String s) throws SQLException {
return CustomType.fromString(resultSet.getString(s));
}
@Override
public CustomType getNullableResult(ResultSet resultSet, int i) throws SQLException {
return CustomType.fromString(resultSet.getString(i));
}
@Override
public CustomType getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
return CustomType.fromString(callableStatement.getString(i));
}
}
```
在这个例子中,CustomTypeHandler继承自MyBatis中的BaseTypeHandler,并重写了一些方法来实现类型转换。setNonNullParameter方法用于将Java对象转换为数据库中的值,getNullableResult方法用于将数据库中的值转换为Java对象。
接下来,在您的实体类中使用@TableField注解来指定字段使用自定义的TypeHandler。例如:
```java
public class MyEntity {
@TableField(typeHandler = CustomTypeHandler.class)
private CustomType customType;
// 其他字段和方法...
}
```
最后,您需要在MyBatis的配置文件中注册自定义的TypeHandler。在application.properties或application.yml中添加以下配置:
```yaml
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
type-handlers-package: com.example.typehandler
```
这里的`com.example.typehandler`是您自定义TypeHandler类的包路径。
通过这些步骤,您就可以在Spring Boot中使用MyBatis Plus的TypeHandler来处理自定义类型和Java对象之间的转换了。