单独的使用mybatis 怎么来管理事务
例如:
表:user
映射文件:userMapper.xml
dao接口:userMapper.java
service接口:userService.java
service实现:userServiceImpl.java
这些都比较简单就不贴出来了
在userServiceImpl中(getSession()是dbopreate.java 获得的SqlSession)
userMapper userDao=getSession().getMapper(UserMapper.class);
userDao.select();
...
但是如果是要进行事务的话,就要在userServiceImpl的一个方法中:
public void doxxxxx(){
TransactionFactory transactionFactory = new JdbcTransactionFactory();
userMapper userDao=getSession().getMapper(UserMapper.class);
Transaction newTransaction=transactionFactory.newTransaction(getSession().getConnection());
try {
userDao.insert(xxx);
userDao.update(xxx);
} catch (Exception e) {
newTransaction.rollback();
e.printStackTrace();
} finally {
newTransaction.close();
}
}
这样的话每一个impl的每一个有关事务的方法都要这么写,觉得太麻烦
所以就想怎么把这个事务管理抽离出来,就像整合spring那样切面的管理
没用spring是因为不是web项目是个java窗体的管理程序.......
我自己老子不太好事 求好心人、高人指点
MyBatis
事务
管理
------解决方案--------------------
pubic class BaseServiceImp
{
static {
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Transaction newTransaction=transactionFactory.newTransaction(getSession().getConnection());
}
}
public class userServiceImp extends BaseServiceImp
{
public void doxxxxx(){
userMapper userDao=getSession().getMapper(UserMapper.class);
try {
userDao.insert(xxx);
userDao.update(xxx);
} catch (Exception e) {
newTransaction.rollback();
e.printStackTrace();
} finally {
newTransaction.close();
}
}
}