发布于2021-05-29 21:08 阅读(544) 评论(0) 点赞(18) 收藏(5)
BaseTypeHandler 是个抽象类,需要子类去实现其定义的 4 个抽象方法,而它本身实现了 typeHandler 接口的 4 个方法。
可以对数据保存与查询时做出相应处理,类似操作数据库之间的一个拦截器
举栗子:把集合类型当string存起来,读取的时候映射为list集合
首先自定义handler 继承BaseTypeHandler重写他里边的四个方法
- public abstract void setNonNullParameter(PreparedStatement var1, int var2, T var3, JdbcType var4) throws SQLException;
-
- public abstract T getNullableResult(ResultSet var1, String var2) throws SQLException;
-
- public abstract T getNullableResult(ResultSet var1, int var2) throws SQLException;
-
- public abstract T getNullableResult(CallableStatement var1, int var2) throws SQLException;
代码如下
- public class ListToStringHandler extends BaseTypeHandler<List> {
-
- @Override
- public void setNonNullParameter(PreparedStatement preparedStatement, int i, List list, JdbcType jdbcType) throws SQLException {
- preparedStatement.setString(i, JSON.toJSONString(list));
- }
-
- @Override
- public List getNullableResult(ResultSet resultSet, String s) throws SQLException {
- return JSONArray.parseArray(resultSet.getString(s));
- }
-
- @Override
- public List getNullableResult(ResultSet resultSet, int i) throws SQLException {
- return JSONArray.parseArray(resultSet.getString(i));
- }
-
- @Override
- public List getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
- return JSONArray.parseArray(callableStatement.getString(i));
- }
- }
映射操作
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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!