Mybatis-Plus结合PostgreSQL添加json格式的数据
今天在使用mybatis-plus的时候向postgresql数据库添加json格式的数据时,突然报了错
场景重现
当我们在使用代码生成器生成的实体类对象中默认是String类型的,但是存储的时候他又会报出异常
org.postgresql.util.PSQLException: ERROR: column "form_data" is of type json but expression is of type character varying
在经过多方查验之后发现,存储的类型是字符串是不能够直接存储进数据库的,需要我们通过类型转换让他进行自动转换存储进去
尝试方法
在各方面查找之后,发现可以使用SpringBoot自带的JacksonTypeHandler类自动进行json处理,有的存储的是一个Object,有的存储的是一个Map<String, Object>,但是经过多次尝试,最终都是没有成功的
个人解决办法
在使用了Mybatis-Plus自己封装的TypeHandler无法生效之后,我尝试自己封装一个typeHandler来完成我的目标
- 封装一个typeHandler类
JsonTypeHandler.java
@MappedTypes(Map.class)
@MappedJdbcTypes(JdbcType.OTHER)
public class JsonTypeHandler extends BaseTypeHandler<Map<String, Object>> {
private static final PGobject jsonObject = new PGobject();
private static final ObjectMapper objectMapper = new ObjectMapper();
@SneakyThrows
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Map