Вот пример кода, я хочу, чтобы захватить исключение бросили на mybatis:Как захватить исключение mybatis «org.apache.ibatis.exceptions.PersistenceException»?
String resource = "com/sureone/server/db/mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
sqlSession = factory.openSession(true);
tUserMapper = sqlSession.getMapper(TUserMapper.class);
if(tUserMapper.insert(user)>0){ <===Exception throwed here for duplicate entry problem
return verifyLogin(user.getAccount(),user.getPassword());
}
return null;
Исключение я хочу захвачена:
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'userName' for key 'account_UNIQUE'
Вы также можете проверить полный ответ кода в [this] (http://stackoverflow.com/a/13602807/416369) SO thread. Однако в вашем случае, так как вы используете пакет «org.apache.ibatis ...», вам нужно будет поймать PersistenceException вместо NestedSQLException, поскольку это тот, который будет обертывать реальную причину. – sactiw