package com.pack.DbOPs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.pack.spliter.DbPojo;
/**
* @author amriteshk
* @project TestDHProcess
* @created 12-Sep-2018 5:42:54 pm
* @classname com.pack.DbOPs.TestSpringJdbc.java
*/
public class TestSpringJdbc {
@Autowired
private static TestDbDaoImpl testDbDaoImpl;
public static void main(String[] args) throws Throwable {
DbPojo pojo=new DbPojo();
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
try {
pojo.setCardRdrHealth("xxx");
pojo.setDespHealth("yyy");
pojo.setPrinterHealth("ooo");
pojo.setTerminalId("999");
pojo.setVaultHealth("hjy");
testDbDaoImpl =(TestDbDaoImpl) ctx.getBean("edao");
int status=testDbDaoImpl.SaveDeviceHelth(pojo);
System.out.println(status);
} catch (Exception e) {
System.out.println(e.getMessage());
pojo.setCardRdrHealth("xxx");
pojo.setDespHealth("yyy");
pojo.setPrinterHealth("ooo");
pojo.setVaultHealth("hjy");
pojo.setTerminalId("8989");
testDbDaoImpl =(TestDbDaoImpl) ctx.getBean("edao");
int status=testDbDaoImpl.SaveDeviceHelth(pojo);
System.out.println(status);
}
}
}
在这种情况下,终端ID是主键,终端ID已在表中显示为“ 999”,我想使用相同的终端ID值运行查询,因此它将引发异常并在catch块i中想要处理异常并使用新的终端ID值插入,但仍在抛出 例外,还有其他解决方法吗?除了运行2查询以选择终端ID并匹配然后更新。。
先谢谢了。
答案 0 :(得分:1)
代替等待异常,我将执行插入忽略操作,检查返回的行数,如果它为0,则可以更改终端ID。
您不需要重建整个POJO,只需更新终端ID并重新运行插入即可。