pom.xml
//tkmybatis依赖
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
实体类
//后面贴JsonTypeHandler代码
import com.demo.handler.JsonTypeHandler;
import tk.mybatis.mapper.annotation.ColumnType;
/**
* BeanExt中的属性是json中的key
*/
@Column(name = "column_name")
@ColumnType(typeHandler = JsonTypeHandler.class)
private List<BeanExt> beanList;
/**
* BeanExt代码,以json中key的name创建属性
*/
public class BeanExt {
private String id;
private String name;
}
JsonTypeHandler
package com.demo.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
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;
import java.util.List;
public class JsonTypeHandler extends BaseTypeHandler<Object> {
private final Class<?> type;
public JsonTypeHandler(Class<?> type) {
this.type = type;
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i, Object t, JdbcType jdbcType) throws SQLException {
ps.setObject(i, JSON.toJSONString(t), 1111);
}
@Override
public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {
return toJavaObject(rs.getString(columnName));
}
@Override
public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return toJavaObject(rs.getString(columnIndex));
}
@Override
public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return toJavaObject(cs.getString(columnIndex));
}
protected Object toJavaObject(String columnValue) {
if (type.getName().equals(JSONArray.class.getName()) || type.getName().equals(List.class.getName())) {
return JSON.toJavaObject(JSON.parseArray(columnValue), type);
}
return JSON.toJavaObject(JSON.parseObject(columnValue), type);
}
}
mybatis.xml
<resultMap id="BaseResultMap" type="com.demo.bean.Bean">
<result column="column_name" javaType="com.demo.bean.Bean"
typeHandler="com.demo.handler.JsonTypeHandler" property="beanList" />
</resultMap>
tkmybatis快捷新增方法
mapper.insert(bean);
数据库效果展示