TableFieldJSON
大约 2 分钟
TableFieldJSON
用户来标识实体类的某个字段是否是数据库的JSON
字段,这个只会在如果使用的数据是PostgreSQL的时候才使用
使用说明
这个注解会在往数据库的表的这个JSON
字段插入数据的时候将插入的字符串类型数据转换成PGobject
😑😑PostgreSQL
的驱动要求JSON
数据只能这样子插入,因为PostgreSQL
对类型很敏感,不能像MySQL
一样直接插入字符串,所以这个注解就是协助做了这个转换的工作
/**
* 获取 JSON 字段的值
*
* @param ms 调用的方法
* @param fieldValue 字段值
* @return 最终结果
*/
public static Object getJSONFieldValue(MappedStatement ms, Object fieldValue) {
DbType dbType = DbType.getDbType(ms.getConfiguration().getDatabaseId());
if (Objects.requireNonNull(dbType) == DbType.POSTGRE_SQL) {
// 如果是 pgsql 需要做额外处理
if (fieldValue instanceof String) {
PGobject pGobject = new PGobject();
pGobject.setType("json");
try {
pGobject.setValue((String) fieldValue);
fieldValue = pGobject;
} catch (SQLException e) {
log.trace(e.getMessage(), e);
}
}
}
// 后面再添加其他数据库的兼容,这里先兼容 pgsql
return fieldValue;
}