"<pre class=""brush:java; toolbar: true; auto-links: false;"">public class TestOne {
private static SqlSessionFactory sqlSessionFactory;
private static Reader reader;
private static final String CONFIG = "mybatis.cfg.xml";
static{
try{
//第一步读取配置文件信息
reader = Resources.getResourceAsReader(CONFIG);
//第二步通过 SqlSessionFactoryBuilder 实例化 SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
//第三步获取操作数据库对象SqlSession
SqlSession session = sqlSessionFactory.openSession(false);
try {
Member user = new Member();
user.setName("VitoHuang");
user.setAge(24);
user.setSex(0);
//第四步CRUD
session.insert("Member.create",user);
//第五步提交事务
session.rollback();
//session.commit();
}catch (Exception e){
session.rollback();
e.printStackTrace();
} finally {
//第六步关闭连接
session.close();
}
}</pre>
最近在学习mybatis,但是发现我把sqlSessionFactory.openSession(false)设置未false,代码结束时故意回滚,但在仍然提交了数据!如果我要控制事务应该要怎么写呢?
"数据表需要设置为InnoDB######
不是对session rollback.而是对transaction rollback
你参考下我的代码片段:
分享数据库前沿,解构实战干货,推动数据库技术变革