数据库中插入自定义类型
最后更新:2025-07-29 17:26:23
|
状态:未完成
如果有项目中自定义的类型 在写入数据库时 驱动有可能不支持
可以注册一个DataWriter,实现write方法,在写入数据库时如果匹配到相关的类型 会调用write方法执行类型转换
write要把Object value转换成java默认类型,这样系统内部会转换成驱动需要的类型
或者直接转换成数据库驱动支持的类型
第一个参数中 new Object[]{java.util.Date.class, User.class, "其他class"} 可以接收任何类型的参数,包括String类型的"varchar"等
可以注册一个DataWriter,实现write方法,在写入数据库时如果匹配到相关的类型 会调用write方法执行类型转换
write要把Object value转换成java默认类型,这样系统内部会转换成驱动需要的类型
或者直接转换成数据库驱动支持的类型
DataWriterFactory.reg(new Object[]{java.util.Date.class, User.class, "其他class"},new DataWriter() { @Override public Object write(Object value, Boolean placeholder, Boolean unicode, TypeMetadata type) { Object result = value; if(result instanceof User){ //遇到User类型 返回主键值 result = ((User)result).getId(); } //把value转换成 java默认类型 或 数据库驱动中提供的类型 System.out.println(LogUtil.format("用户自定义类型转换器", 31)); return result; } }); 也可以限定数据库类型 DataWriterFactory.reg(DatabaseType dbt, Object[] supports, DataWriter writer)
第一个参数中 new Object[]{java.util.Date.class, User.class, "其他class"} 可以接收任何类型的参数,包括String类型的"varchar"等
当写入数据库时遇到第一个参数中指定的任意一个类型匹配时 就会调用定义的DataWriter方法实现类型转换
PG数据库经常遇到写入JSON格式的数据,这种情况可以不定义DataWriter,
ConfigTable.IS_ENABLE_SQL_DATATYPE_CONVERT = true; 打开这个也可以,会在SQL执行过程中把String转换成JSON