Mybatis中TypeHandler的简单应用
数据库中某个字段的列类型是json类型。
java类中某个属性是String类型。
在项目工程里加入下面这个:
/**
*这个类的第一个方法是对预处理语句(PreparedStatement)设置参数,之后的三个函数都是从ResultSet或*者用于执行存储过程的CallableStatement语句中获取String类型的数值,用于向Sring类型的
*Java字段赋值。
*这个Handler继承的BaseTypeHandler是个泛型类,其他的TypeHandler也是通过继承这个抽*象类,实现其中的抽象方法,实现类型转换的工作。
*
*参考链接:https://www.imooc.com/article/18514
*
*
/
public class JsonStringToStringTypeHandler extends BaseTypeHandler<String> {private Gson gson = new Gson();@Overridepublic void setNonNullParameter(PreparedStatement preparedStatement, int columnIndex, String parameter, JdbcType jdbcType)throws SQLException {preparedStatement.setString(columnIndex, gson.toJson(parameter));}@Overridepublic String getNullableResult(ResultSet resultSet, String columnName) throws SQLException {return deserialize(resultSet.getString(columnName));}@Overridepublic String getNullableResult(ResultSet resultSet, int columnIndex) throws SQLException {return deserialize(resultSet.getString(columnIndex));}@Overridepublic String getNullableResult(CallableStatement callableStatement, int columnIndex) throws SQLException {return deserialize(callableStatement.getString(columnIndex));}private String deserialize(final String json) {return gson.fromJson(json, String.class);}
}
然后在xml中加入:
<foreach collection="xxxxList" item="item" open="(" separator="or" close=")">JSON_CONTAINS(数据库json类型字段的名,#{传进来的参数, typeHandler=com.xx.xxx.JsonStringToStringTypeHandler},'$')</foreach>
也可以配置成:
<typeHandlers><typeHandler handler="com.xxxx.xxx.xxxxTypeHandler"/>
</typeHandlers>
Mybatis中TypeHandler的简单应用相关推荐
- Mybatis中强大的功能元素:resultMap
转载自 Mybatis中强大的功能元素:resultMap 前言 在Mybatis中,有一个强大的功能元素resultMap.当我们希望将JDBC ResultSets中的数据,转化为合理的Java ...
- Mybatis中强大的resultMap
本文来说下mybatis中的resultMap,在平时的开发中resultType使用的比较多.resultType在解决一对一的关系时候比较方便,但是在设计到多对多的时候,使用resultMap比较 ...
- mybatis的简单查询用语句吗_面试官:Mybatis中的TypeHandler你用过吗?
前言 相信大家用Mybatis这个框架至少一年以上了吧,有没有思考过这样一个问题:数据库有自己的数据类型,Java有自己的数据类型,那么Mybatis是如何把数据库中的类型和Java的数据类型对应的呢 ...
- 使用mybatis中的自定义TypeHandler处理PostgreSQL中的Json类型
postgres里的json格式 我们在使用postgres数据库时会使用到json格式来存放一些格式不固定的字段,postgres支持json和jsonb两种格式,两者的区别以后再说,今天说一下结合 ...
- 玩转Mybatis中的类型转换器TypeHandler
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 抛开使用场景谈技术都是耍流氓 1. 场景 日常java开发中经常有这种需求,用0或者1这些代 ...
- mybatis中ResultSetHandler的设计与实现
ResultSetHandler主要处理statement,cursor,callstatement三种类型的结果集,其接口定义如下: public interface ResultSetHandle ...
- MyBatis中的selectKey
2019独角兽企业重金招聘Python工程师标准>>> SelectKey在Mybatis中是为了解决Insert数据时不支持主键自动生成的问题,他可以很随意的设置生成主键的方式. ...
- Java、Mysql、MyBatis 中枚举 enum 的使用
From: https://yulaiz.com/java-mysql-enum/ Java 和 MySql 中都有枚举的概念,合理的使用枚举,可以让代码阅读和数据库数据查询更加直观.高效.那么我们怎 ...
- Mybatis中resultMap
MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接 表示返回类型的,而resultMap则是对外部Result ...
最新文章
- 手机端自适应字体大小和元素宽度自适应
- python post请求 415_接收错误415:使用REST API发送GET请求时不支持媒体类型
- 本地连接Linux工具
- python使用md5加密_如何使用Python构建加密机器人并将其连接到Facebook Messenger
- 面向对象编程(六):数据封装
- Go Module 私有仓库:fatal: could not read Username for ‘https://xxx.com‘: terminal prompts disabled
- 【Zeekr_Tech】TARA攻击树分析方法论
- SIM7600CE-CNSE 4G模组发送英文短信
- GYM MaratonIME plays Chess 模拟
- 的脑袋里有台超级计算机,我的脑袋里有台超级计算机
- 西瓜视频地址分析下载(2020-10-29)
- C++实现简单的停车场管理系统
- Ubuntu-20.04 LTS 更换国内163源、阿里源、清华源、中科大源
- adress标签的使用
- bayaim_当前国内外Hadoop的实际使用案例
- JS中的各种遍历方法
- 强烈推介的几个微信小程序开发小技巧,简单又实用
- Grammer -- 疑问句
- SQL 注入漏洞检测与利用
- 科研素养:了解学术会议的形式和结构
热门文章
- 解决网站因调用谷歌字体库打开慢(适用wordpress和调用谷歌内容的网站)
- 7-8 等腰直角三角形 -- PTA
- android性能排行,2018年11月Android手机性能排行 麒麟980碾压高通蝉联前三
- vue移动端,使用canvas生成商品海报及自定义海报
- 《Android NFC开发实战详解》——6.4节Android NFC P2P开发进阶
- 逐步释放质疑怎么样释放std::vector所占用的内存空间
- Nacos Serve 本地启动报Error starting Tomcat context. Exception: org.springframework.beans.factory.BeanCre
- delphi编写dll
- d6.VUE基础20211229
- kickstart配置文件详解和system-config-kickstart