Wie erfassen Sie die mybatis-exception “org.apache.ibatis.Ausnahmen.PersistenceException"?
Hier ist der Beispielcode, ich will die Ausnahme throwed von mybatis:
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;
Ausnahme möchte ich erfasst:
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'userName' for key 'account_UNIQUE'
Sie einen außerdem prüfen, ob der code vollständig ist die Antwort im dieser ALSO thread. Allerdings, in Ihrem Fall, da Sie eine "org.apache.ibatis..." - Paket, so müssen Sie zu fangen PersistenceException statt NestedSQLException, da es die eine, wickeln Sie die wirkliche Ursache unter.
InformationsquelleAutor sureone | 2013-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erfassen die
PersistenceException
wie würden Sie in der Regel :Aber nicht vergessen, dass dies
Exception
umschließt das richtige:Von MyBatis-code
So, wenn Sie möchten das in den Griff bekommen, die Ursache des
PersistenceException
müssen Sie.getCause()
Methode auf diePersistenceException
Sich bewusst sein, dass MyBatis können auch starten Sie Ihren eigenen
PersistenceException
(TooManyResultException
,BindingException
...) - Klassen, diejenigen, die nicht haben eine UrsacheException
gewickelt.InformationsquelleAutor Michael Laffargue
Können Sie erfassen die ibatis Ausnahme, indem Sie einen try/catch-block, um Ihre Aussagen, aufrufen, myBatis Abfrage/insert. Zum Beispiel, wenn Sie die SqlSessionTemplate und die selectList () - Methode, können Sie dies tun:
Ob Sie wieder die Ausnahmen oder konsumieren und befassen sich mit es ist hier Ihre Wahl. Aber hüten Sie sich vor "Essen" und nicht mit dem problem umzugehen, da dies ermöglicht den Aufruf-code, um den Fortschritt, ohne zu wissen, über die zugrunde liegenden Daten Zugriff problem.
InformationsquelleAutor pmhargis