我正在使用JAXB和joda时间2.2.将数据从Mysql备份到XML并将其还原.在我的表中,我有一个Date属性,格式为"16-Mar-05".我成功地将其存储在XML中.但是当我想从XML中读取它并将其放回Mysql表中时,我无法获得正确的格式.
这是我的XMLAdapter类,这里的unmarshal方法输入String是"16-Mar-05",但我不能以"16-Mar-05"的格式获取localDate变量,虽然我将模式设置为"dd- MMM-YY".我发布了我尝试过的所有选项,如何在16d-05-05格式的"dd-MMM-yy"中获取我的localDate?
谢谢!!
public class DateAdapter extends XmlAdapter<String, LocalDate> {
// the desired format
private String pattern = "dd-MMM-yy";
@Override
public String marshal(LocalDate date) throws Exception {
//return new SimpleDateFormat(pattern).format(date);
return date.toString("dd-MMM-yy");
}
@Override
public LocalDate unmarshal(String date) throws Exception {
if (date == null) {
return null;
} else {
//first way
final DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MMM-yy");
final LocalDate localDate2 = dtf.parseLocalDate(date);
//second way
LocalDate localDate3 = LocalDate.parse(date,DateTimeFormat.forPattern("dd-MMM-yy"));
//third way
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("dd-MMM-yy");
DateTime dateTime = FORMATTER.parseDateTime(date); …Run Code Online (Sandbox Code Playgroud) 我有一个备份实用程序,用于恢复部分。这是我的桌子:
CREATE TABLE "SBOOKS"."DEV_CORPUS"
( "CORPUSID" NUMBER(9,0) NOT NULL ENABLE,
"CORPUS_NAME" VARCHAR2(768 BYTE) NOT NULL ENABLE,
"CORPUSLASTSYNC" DATE,
PRIMARY KEY ("CORPUSID")
Run Code Online (Sandbox Code Playgroud)
在恢复类中,我想在表中查找主键,如果存在则更新该行,如果不存在则插入一行。
现在的问题是我需要从类传递参数(它们不存在于任何表中),我该怎么做?你的建议是什么?使用准备好的语句还是什么?如何?请给出示例或来源链接。
更多信息:我正在使用 oracle sql Developer 和 java netbeans。
编辑: 我正在命令窗口中尝试此操作:
MERGE INTO dev_corpus a
USING (SELECT corpusid, corpus_name, corpusdesc, corpusimageids, rocf1, rocf2, rocf3, rocc1, rocc2, rocc3, corpusactive, corpusrunfrequency, corpuslastrun, corpuslastsync, rocsettingid, corpusaffinity, corpusterms, corpusdomain FROM dual WHERE corpusId = 1000156 AND corpus_name = 'sahar' AND corpusdesc = 'sahaaaaa' AND corpusimageids IS NULL AND rocf1 IS NULL AND rocf2 …Run Code Online (Sandbox Code Playgroud)