V1.11.0.3.8 (Lady First)
增加SetParaTypeConvert转化PreparedStatement参数.
Javabean使用java.util.Date类型,进行SUID作兼容处理.
SQLite获取Timestamp结果作转化处理.
V1.11.0.2.28 (Special Day)
支持自定义TypeHandler,处理查询的ResultSet结果
1.SetParaTypeConvert
SetParaTypeConvert接口用于定义在为PreparedStatement设置参数时,转换Javabean的属性类型.
/**
* Convert the set-parameter type.
* The SetParaTypeConvert work for setting parameter to PreparedStatement.
* @author Kingstar
* @since 1.11
*/
public interface SetParaTypeConvert<T> {
public Object convert(T value);
}
需要转换的类型,是JDBC无法识别的类型. 比如一个Address包括省市区和详细地址,邮编等,是以json格式的字符串存到DB.
那就可以定义一个转换器,将Address类型转成String.
实现好SetParaTypeConvert转换器后,需要注册到:SetParaTypeConverterRegistry.
比如Bee默认实现的java.util.Date类型转换(若该转换器只用于某个DB,则需要指明DB名称):
SetParaTypeConverterRegistry.register(java.util.Date.class, new UtilDotDateTypeToTimestampConvert<java.util.Date>(), DatabaseConst.MYSQL);
SetParaTypeConverterRegistry.register(java.util.Date.class, new UtilDotDateTypeConvert<java.util.Date>());
具体例子可参考:
org.teasoft.honey.osql.type.UtilDotDateTypeConvert
2.TypeHandler
处理查询的ResultSet结果
* 实体字段类型查询结果处理器.
* 根据实体的字段类型,选用处理器处理查询返回结果.
* 若要使用,需要开启openFieldTypeHandler配置.
* The TypeHandler work for handle ResultSet by select.
package org.teasoft.bee.osql.type;
/**
* 实体字段类型查询结果处理器.
* 根据实体的字段类型,选用处理器处理查询返回结果.
* 若要使用,需要开启openFieldTypeHandler配置.
* The TypeHandler work for handle ResultSet by select.
* @author Kingstar
* @since 1.11
*/
public interface TypeHandler<T> {
/**
* 使用自定义字段类型处理器处理查询返回结果.
* @param fieldType Javabean field type.
* @param result get from ResultSet.
* @return processed result.
*/
public T process(final Class<T> fieldType, final Object result);
}
还是上面Address的例子. 在上面,我们是将Address以字符串存入DB, 那查出来后,我们就需要将字符串转回Address.
(这里留个问题:若是有很多像Address需要保存为Json字符串,有什么更好的办法吗?)
可参考Bee默认实现的:org.teasoft.honey.osql.type.CharTypeHandler;
定义好实现类后,要注册到 TypeHandlerRegistry. 以下为Bee内置的注册CharTypeHandler,用于支持原生char类型. 自定义的类型,可以声明先于默认类型使用.
TypeHandlerRegistry.register(char.class, new CharTypeHandler<Character>(),true);
------------------------------------------------------------
Bee,互联网新时代的Java ORM工具,更快、更简单、更自动,开发速度快,运行快,更智能!
Bee让程序员/软件工程师,从手工编码中解放出来,Bee更适合智能软件制造时代!
十分钟即可入门!
立志做最懂用户的软件!