MyBatis TypeHandler中的正确ObjectFactory

时间:2018-05-23 11:49:08

标签: spring mybatis spring-ws

我正在使用MyBatis在Spring-ws中创建一个项目。 我在xsd中有很多Web服务定义。 Spring正在基于xsd创建POJO类。

问题是在xsd中我有包含参数let lambdaInvoker = AWSLambdaInvoker.default() lambdaInvoker.invokeFunction(lambdaFunctionString, jsonObject: jsonObject).continueWith(block: {(task:AWSTask<AnyObject>) -> Any? in if let error = task.error as NSError? { print(task.error!.localizedDescription) print(task.error!) DispatchQueue.main.async(execute: { if (error.domain == AWSLambdaInvokerErrorDomain) && (AWSLambdaInvokerErrorType.functionError == AWSLambdaInvokerErrorType(rawValue: error.code)) { print("Function error: \(String(describing: error.userInfo[AWSLambdaInvokerFunctionErrorKey]))") completion(nil) } else { print("Error: \(error)") completion(nil) } }) return nil } // Handle response in task.result DispatchQueue.main.async(execute: { if let jsonArray = task.result as? NSArray { completion(jsonArray) } else { completion(nil) } }) return nil })

的字段 像这样: nillable="true"

生成的POJO中的字段如下所示: <xs:element name="numericParam" type="xs:int" minOccurs="0" maxOccurs="1" nillable="true"/>

我想在MyBatis配置中创建自定义protected JAXBElement<Integer> numericParam;来处理TypeHandler类型,但我怎么知道要使用哪个JAXBElement<Integer>

是否可以知道哪个映射器正在调用我的自定义TypeHandler?在TypeHandler中我只有列名。

1 个答案:

答案 0 :(得分:0)

这在mybatis中目前不可能(版本3.4.6)。没有关于上下文的信息(如封闭类型或映射器方法)被传递给处理程序。

如果你确实想使用jaxb生成的类型,你需要为每个字段创建一个处理程序(因为有一个共同的基础可以实现所有的逻辑)。