程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

mybatis 之 BaseTypeHandler

发布于2021-05-29 21:08     阅读(431)     评论(0)     点赞(18)     收藏(5)


BaseTypeHandler 是个抽象类,需要子类去实现其定义的 4 个抽象方法,而它本身实现了 typeHandler 接口的 4 个方法。

可以对数据保存与查询时做出相应处理,类似操作数据库之间的一个拦截器

 举栗子:把集合类型当string存起来,读取的时候映射为list集合

首先自定义handler 继承BaseTypeHandler重写他里边的四个方法

  1. public abstract void setNonNullParameter(PreparedStatement var1, int var2, T var3, JdbcType var4) throws SQLException;
  2. public abstract T getNullableResult(ResultSet var1, String var2) throws SQLException;
  3. public abstract T getNullableResult(ResultSet var1, int var2) throws SQLException;
  4. public abstract T getNullableResult(CallableStatement var1, int var2) throws SQLException;

代码如下

  1. public class ListToStringHandler extends BaseTypeHandler<List> {
  2. @Override
  3. public void setNonNullParameter(PreparedStatement preparedStatement, int i, List list, JdbcType jdbcType) throws SQLException {
  4. preparedStatement.setString(i, JSON.toJSONString(list));
  5. }
  6. @Override
  7. public List getNullableResult(ResultSet resultSet, String s) throws SQLException {
  8. return JSONArray.parseArray(resultSet.getString(s));
  9. }
  10. @Override
  11. public List getNullableResult(ResultSet resultSet, int i) throws SQLException {
  12. return JSONArray.parseArray(resultSet.getString(i));
  13. }
  14. @Override
  15. public List getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
  16. return JSONArray.parseArray(callableStatement.getString(i));
  17. }
  18. }

映射操作

mybaits-plus 方式

bean上添加注解

@TableName(autoResultMap = true)

映射字段上添加如下注解,指定自定义的handler

@TableField(jdbcType = JdbcType.VARCHAR, typeHandler = ListToStringHandler.class)

 mybaits的方式

<resultMap> 标签内 映射字段的handler 指定自定义的handler即可,保存的时候也要指定。

 测试

这只是其一种简单的用法,其他的比如加密解密也适用。



所属网站分类: 技术文章 > 博客

作者:我是不是很美

链接:http://www.javaheidong.com/blog/article/207483/e985fe69547ca277dca3/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)