簡體   English   中英

ObjectFactory和MyBatis,將結果映射到JAXBElement <XmlGregorianCalendar>

[英]ObjectFactory and MyBatis, mapping result into JAXBElement<XmlGregorianCalendar>

我正在用駱駝運行MyBatis。

查詢的結果包含jdbcType =“ DATE”格式的一些數據。 我寫了我的自定義ObjectTypeHandler,它處理SQL日期和XMLGregorianCalendar日期類型之間的轉換,該日期類型用於將數據設置為JAXB對象(從xsd方案生成)。

問題在於,並非JAXB類中的所有字段都接受原始XMLGregorianCalendar值,其中某些字段是以需要JAXBElement的方式定義的。

我可以使用ObjectFactory實例解決此問題,但是隨后我需要為每個以JAXBElement作為輸入的字段編寫自定義ObjectTypeHandler(因為它們在ObjectFactory中具有自己的create *方法),並且其中有很多。 聽起來很多樣板和重復的代碼。

是否可以更寬容地處理它?

我使用@Vadim建議解決了這個問題:

只需定義xjb文件(將generateElementProprety設置為false以避免生成JAXBElement包裝器),然后在從XSD方案生成POJO期間將其提供給XJC編譯器。

例如:

綁定文件

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jaxb:globalBindings generateElementProperty="false"/>
</jaxb:bindings>

通過命令啟動XJC編譯器:

xjc *.xsd -d ../../java -b bindings.xjb

本示例使用bindings.xjb文件中的其他設置,從位於工作目錄中的方案文件( *.xsd )將POJO文件生成到../../java目錄中。

感謝@Vadim,指出正確的方向!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM