首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

运用iBatis的类型处理器TypeHandlerCallback

2012-09-28 
使用iBatis的类型处理器TypeHandlerCallbackiBatis的扩展组件主要有TypeHandlerCallback、CacheController、

使用iBatis的类型处理器TypeHandlerCallback

iBatis的扩展组件主要有TypeHandlerCallback、CacheController、DataSourceFactory、TransactionConfig。其中TypeHandlerCallback可以实现自定义的类型处理逻辑,以便处理非标准数据库、驱动程序和(或)数据类型。

?

场景举例

有如下数据表,请注意字段status的类型及含义:

?

?

主要处理过程是,因在sqlMap中给属性配置了typeHandler,所以在写或改数据前,先调用setParameter方法,再生成SQL,这时已将枚举型转换为整型;在读取数据后映射类时,会调用getResult方法,将整型转换为枚举型。

?

完整的示例请见附件,导入到IDE即可运行,IBatisTest是测试用例。

?

上述实例满足了一开始的需求,即Java类中将属性定义为枚举型,在存储时仍用整型,既友好直观地让使用者给类赋值又满足了存储需要。应用场景还有很多,如:对所有字符串型数据先压缩再存储,则可在sqlMapConfig中定义全局typeHandler,凡"javaType=java.lang.String"时,都通过该扩展在写之前先压缩,读取后先解压再返回。


若将Handler定义在sqlMapConfig,则该typeHandler是全局可用的。

?

全局typeHandler定义:

?

?

热点排行