一般情况下,mybatis自带的类型转换器已经足够用了,但是需求永无止境,自定义类型转换器还是学一下吧,指不定哪天会用上。

举个没啥用的示例

javabean如下:

public class User {

private Integer id;

private Message message;

}

public class Message {

private Integer id;

private String address;

private String job;

}

复制代码

数据库User表如下:

列名

类型

id

int

message

varchar

Message对象在 java 中是一个bean,而在 数据库 中是一个字符串,这中间需要类型转换一下,所以我的目的是:

通过自定义类型转换器,在存数据得到时候自动将message对象转化为字符串类型,存入数据库中。在取数据的时候,则自动将字符串转化为Message对象封装进结果集。

类型转换器:

@MappedTypes(Message.class)

@MappedJdbcTypes(JdbcType.VARCHAR)

public class MessageTypeHandler implements TypeHandler {

@Override

public void setParameter(PreparedStatement ps, int i, Message parameter, JdbcType jdbcType) throws SQLException {

ps.setString(i, JSON.toJSONString(parameter));

}

@Override

public Message getResult(ResultSet rs, String columnName) throws SQLException {

return JSON.parseObject(rs.getString(columnName),Message.class);

}

@Override

public Message getResult(ResultSet rs, int columnIndex) throws SQLException {

return JSON.parseObject(rs.getString(columnIndex),Message.class);

}

@Override

public Message getResult(CallableStatement cs, int columnIndex) throws SQLException {

return null;

}

}

复制代码

在mybatis配置文件中添加如下配置:

复制代码

这样我们就可以直接编写sql而不用手动去处理类型转换的事情了。

insert into user (id,message) values (#{id},#{message})

select id,message from user where id = #{id}

复制代码

mybatis 自定义转换规则_Mybatis使用小技巧-自定义类型转换器相关推荐

  1. VB 小技巧自定义TextBox文本框右键菜单

    'TextBox单击鼠标右键总是跟出来一个系统默认的关于文本操作的菜单,如何把它去掉?请看如下代码. Private Sub Text1_MouseDown(Button As Integer, Sh ...

  2. ithoughts怎么自定义样式_微信小程序自定义导航栏组件封装

    相信很多小伙伴在开发微信小程序的时候都会有自定义顶部导航栏的需求,不够要说明的是小程序右上角的胶囊是不能自定义的哦,除了胶囊其他地方都是可以根据自己的项目而定了,在一次小程序开发中就需要对顶部进行自定 ...

  3. 自定义Toolbar的一些小技巧

    目录 1.改变Toolbar高度(解决图标不垂直居中) 2.改变toolbar弹窗菜单样式 3.改变toolbar整体样式 4.改变searchview样式 1.改变Toolbar高度(解决图标不垂直 ...

  4. 亿图画流程图的小技巧——自定义模板

    废话不多说,第一是怕自己忘了,第二也是分享给有缘人!大牛请靠边站 亿图自定义模板: 1.打开亿图,创建一个流程图 2.将经常要用到的背景.标题.以及常用的图标.箭头.字体拖动至画栏里. 再添加一些常用 ...

  5. 玩机小技巧 | 自定义专属自己的优麒麟任务栏托盘

    一.应用场景 在系统使用的过程中,有些应用需要长时间运行在桌面环境中,例如网络,声音,麒麟天气,电源电池,输入法,QQ,微信等,为了让用户随时访问这些程序以及了解它们的状态,任务栏除了需要快速启动图标 ...

  6. [编程手记小技巧]自定义调试信息宏及gcc技巧

    文中所讲的函数,可能是指使用宏定义的"宏函数",也可能是指真正的函数.假设你不会混淆它们,也假设你能理解它们. 许多开源项目代码中都有自定义的调试信息的相关的函数.比如u-boot ...

  7. Visio使用小技巧——自定义模具及导入

    自定义模具 一.ViSIO模具定义:一组形状的组合 二.自定义模具使用场景:当制作流程图的时候,为统一形状的大小规格,可自定义一组形状标本作为基准,绘制流程图时直接使用此形状. 三.如何自定义模具: ...

  8. uni-app自定义tabBar;uni-app小程序自定义tabBar;uni-app小程序修改中间tabBar导航栏大小;uni-app中间导航栏凸起;uni-app修改底部导航栏

    需求:要求小程序,中间的tabBar自定义凸起或者图标变大: 问题:查看uni-app的tabBar文档可知,小程序是不支持midButton的: 解决思路:隐藏uni-app原有的tabBar,然后 ...

  9. 小程序获取用户头像大图 小程序获取用户头像模糊的问题 小程序自定义转发头像模糊 小程序自定义转发分享大图...

    在开发小程序的时候,大家肯定有做过自定义转发分享图片的.我们现在做了一个名片小程序,需要做的一个功能就是,用户在转发分享自己的名片,在微信里显示的小程序缩略图,我们使用的是用户的微信头像,但是发现一个 ...

最新文章

  1. 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
  2. Vs 控件错位 右侧资源管理器文件夹点击也不管用,显示异常
  3. 侏罗纪世界手游显示无法登陆到服务器,《侏罗纪世界手游》不能玩 解决攻略...
  4. jar命令更新jar中的class文件
  5. 谷歌跨界医学新动作:基因突变定位模型又更!新!了!
  6. Vue中条件判断 v-if 、v-show
  7. MATLAB实现频数直方图——hist的使用
  8. zabbix_nginx监控
  9. [matlab也能用来机器学习!?]保存工具箱模型并使用模型预测结果
  10. 经纬财富:包头怎么炒现货白银
  11. 动态yumbo的gif制作
  12. MME连几个eNB的问题
  13. 14----统计字符数
  14. pc端生成支付宝支付二维码
  15. 十二、Hi3556移植RTL8189 WIFI驱动
  16. STM32控制NRF24L01无线模块进行通信
  17. 数据分析实战平台分享
  18. 复旦计算机专业课,当计算机专业课与校史相遇:复旦学子“硬核学史”
  19. 上海交通大学2021计算机录取,2021年上海交通大学高考录取结果什么时候出来及查询系统入口...
  20. 全新UI简洁H5商城网站源码/带易支付接口

热门文章

  1. java与安卓接口_Android-Java-接口Interface
  2. windows环境的python的环境变量_win的环境变量配置(Python实例)
  3. java用户角色权限管理 只显示姓_扩展RBAC用户角色权限设计方案
  4. SpringBoot 集成 layering-cache 实现两级缓存调研与实践
  5. maven构建Hibernate项目
  6. Java序列化后isXXX变量没有了
  7. servlet中doPost()和doGet()
  8. python好用的内置库_第42p,time库,Python中优秀的内置库
  9. JSP Servlet Mysql高校学生社团管理系统
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的志愿者服务管理系统