![](/img/trans.png)
[英]Convert JAXBElement<XMLGregorianCalendar> to OffsetDateTime
[英]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.