mybatis类型转换为json格式

在项目开发中有些字段需要使用json格式进行存储,mysql从5.7开始已经支持JSON类型的字段。使用mybatis自定义实现类型转换为json格式存储在数据库中。

第一步

新建JsonTypeHandler 继承BaseTypeHandler

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import com.alibaba.fastjson.JSON;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
* 转换为json格式
* @param <T>
*/
public class JsonTypeHandler<T extends Object> extends BaseTypeHandler<T> {
private Class<T> clazz;

public JsonTypeHandler(Class<T> clazz) {
this.clazz = clazz;
}

public JsonTypeHandler() {
}

@Override
public void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, JSON.toJSONString(parameter));
}

@Override
public T getNullableResult(ResultSet rs, String columnName) throws SQLException {
return JSON.parseObject(rs.getString(columnName), clazz);
}

@Override
public T getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return JSON.parseObject(rs.getString(columnIndex), clazz);
}

@Override
public T getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return JSON.parseObject(cs.getString(columnIndex), clazz);
}
}

xml 配置

1
2
3
4
5
6
7
8
<resultMap id="baseMap" type="com.felix.project.model.User">
<id property="id" column="id"/>
<result property="username" column="username" jdbcType="VARCHAR"/>
<result property="password" column="password" jdbcType="VARCHAR"/>
<result property="company" column="company" jdbcType="VARCHAR"/>
<result property="description" column="description" jdbcType="VARCHAR"
typeHandler="com.felix.project.handler.JsonTypeHandler"/>
</resultMap>

添加或者更新

1
2
3
4
5
6
7
8
9
10
11
12
<insert id="add" keyProperty="id" useGeneratedKeys="true">
insert into`user` (username, password, company,description)
values (#{username}, #{password}, #{company}, #{description ,typeHandler=com.felix.project.handler.JsonTypeHandler})
</insert>
<update id="update">
update `user`
set username = #{username},
password = #{password},
company = #{company},
description= #{description,typeHandler=com.felix.project.handler.JsonTypeHandler}
where id = #{id}
</update>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值