一般情况下,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. Hibernate配置详解
  2. 7-4 jmu-Java-06异常-04-自定义异常(综合) (15 分)
  3. Cadence Allegro PCB 铺铜(覆铜)Shape呈格点状填充而不是完整全铜显示问题–Allegro技巧...
  4. 【原】通过npm script运行webpack的原理
  5. Web框架——Flask系列之CSRFToken详解(四)
  6. 前台传JSON到后台
  7. MSIL实用指南-struct的生成和操作
  8. NET代码运行在服务器JS运行在客户端
  9. 【Python笔记】Python/C++解决约瑟夫环问题
  10. 网络扫描工具zmap
  11. 易语言 安装目录没有VC98linker 编译不成功 VC98linker静态连接器(迷你版),易语言VC98linker破解工具,修复静态编译。
  12. pytorch的vgg19的预训练模型提取图片特征
  13. 高斯-马尔科夫过程的充要条件(正态随机过程又是马尔科夫过程的充要条件)
  14. Linux中ls颜色含义
  15. 基于深度学习的中文语音识别系统框架搭建
  16. JVM虚拟机——初识
  17. input表单所有属性【web前端】
  18. Cocos Creator—定制H5游戏首页loading界面 1
  19. 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
  20. 快速学习编程的10个关键技巧

热门文章

  1. python pipeline框架_爬虫(十六):Scrapy框架(三) Spider Middleware、Item Pipeline|python基础教程|python入门|python教程...
  2. php给网页加水印_php实现图片添加水印功能
  3. java虚拟机内存告警_java虚拟机内存溢出各种场景总结
  4. 东莞城院c语言上机报告,浙大城市学院c语言上机试题
  5. 计算机彻底删除删除后如何恢复,如何完全恢复从计算机删除的文件?
  6. unity android 原生,unity创建Android原生插件
  7. 基于JAVA+Servlet+JSP+MYSQL的电影院购票系统
  8. 基于JAVA+Servlet+JSP+MYSQL的个人博客系统
  9. Centos7下zabbix部署(四)定义报警媒介-邮件
  10. 2016级算法期末上机-H.难题·AlvinZH's Fight with DDLs III