iBATIS的自定义类型处理器TypeHandlerCallback
?iBATIS提供TypeHandlerCallback来提供对用户自定义类型的处理。
??
3.TypeHandlerCallback实现类?
?4.注册TypehandlerCallback
? 可以在多个配置文件中进行注册:
? 1).sqlMapConfig.xml。全局配置注册.
? 2)单独的parameterMap或resultMap中注册。
? 本例主要演示在parameterMap中进行注册
?5.运行结果
?? 可以发现,原本在数据库中存储中gender列内容为female,male和null,但是经过自定义类型转换后相应变成了男或女。
? 6.遇到的问题
??? 上述内容经过我测试没有任何问题,不过我在看到相关资料时却出现了一个问题:
?? 在TypeHandlerCallback方法中,存在一个valueOf()方法,其主要作用是当数据库中列可以为空(null)时进行处理。相应地,你需要在注册时在result的nullValue中填写为空时的默认值,如上面的nullValue="male"。
? 此外,还需要特别注意的一点就是:即使你在注册时填写了nullValue='male',仍然会出现NUllpointer异常,并且跟踪发现valueOf方法没有被调用,解决方法是在getResult方法中添加 if (getter.getObject() == null) { return null; }
?即需要你手动判断一次是否为null,当其结果返回null时才有会调用valueOf方法载入所设置的nullValue的值。
?
?
?
?
?