Spring MyBatis TypeHandler中正确的ObjectFactory
我正在用MyBatis在SpringWS中创建一个项目。 我在xsd中有许多web服务定义。 Spring正在基于xsd创建POJO类 问题是,在xsd中,我有一些字段具有参数Spring MyBatis TypeHandler中正确的ObjectFactory,spring,mybatis,spring-ws,Spring,Mybatis,Spring Ws,我正在用MyBatis在SpringWS中创建一个项目。 我在xsd中有许多web服务定义。 Spring正在基于xsd创建POJO类 问题是,在xsd中,我有一些字段具有参数nillable=“true” 像这样: 生成的POJO中的字段如下所示: protected JAXBElement numericParam 我想在MyBatis配置中创建自定义TypeHandler,以处理JAXBElement类型,但我如何知道要使用哪个ObjectFactory 可以知道哪个映射程序正在调用我的
nillable=“true”
像这样:
生成的POJO中的字段如下所示:
protected JAXBElement numericParam代码>
我想在MyBatis配置中创建自定义TypeHandler
,以处理JAXBElement
类型,但我如何知道要使用哪个ObjectFactory
可以知道哪个映射程序正在调用我的自定义TypeHandler吗?在TypeHandler中,我只有列名。这在mybatis中目前(版本3.4.6)是不可能的。没有向处理程序传递有关上下文的信息(如封闭类型或映射器方法)
如果您确实想使用jaxb生成的类型,则需要为每个字段创建一个处理程序(当然,有实现所有逻辑的公共基础是有意义的)。为什么知道处理程序在哪个映射程序中使用很重要?数据库列和对象字段之间的转换是否仅取决于列和字段的类型?是的,它假定仅取决于列和字段的类型。不幸的是,要创建objectJAXBElement
,我需要确切地知道该字段的名称以及它位于哪个模型中。必须这样创建它:newObjectFactory().createNumericParam(value)
。我有许多模型定义,逻辑上划分为多个xsd,每个xsd都有自己的ObjectFactory
,它只负责创建自己的字段。由于不知道TypeHandler
中的当前映射器(或至少端点),我无法选择正确的ObjectFactory
解决方案对您有效吗?我已经尝试过这个方法,但在我的情况下不起作用。我在生成POJO时遇到一些奇怪的错误:namecoverter是一个接口,JAXB无法处理接口。我想这是因为我使用的是org.glassfish.jaxb:jaxbxjc