在以下情况下如何处理异常

时间:2018-09-12 14:40:19

标签: java spring-jdbc

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并匹配然后更新。。

先谢谢了。

1 个答案:

答案 0 :(得分:1)

代替等待异常,我将执行插入忽略操作,检查返回的行数,如果它为0,则可以更改终端ID。

您不需要重建整个POJO,只需更新终端ID并重新运行插入即可。