天天看點

MyBatis一級緩存中增删改要送出事務,查的話就不用

最近在學習MyBatis發現一級緩存中,換成改方法後,資料不一樣了

如下代碼所示

public void testFindAll() {
        User user = userDao.findById(41);
        System.out.println("第一次查詢的使用者 "+user);
        //session.clearCache();//此方法也可以清空緩存
        User user2 = userDao.findById(41);
        System.out.println("第二次查詢使用者: "+user2);
        System.out.println(user == user2);

    }      

這個顯示緩存沒有清除

MyBatis一級緩存中增删改要送出事務,查的話就不用

但是在改的方法時遇到了不同

public void testFindll() {
        //1.根據 id 查詢使用者
        User user1 = userDao.findById(41);
        System.out.println(user1);
        //2.更新使用者資訊
        user1.setUsername("update user clear cache");
        user1.setAddress("北京市海澱區");
        userDao.updateUser(user1);
        //3.再次查詢 id 為 41 的使用者
        User user2 = userDao.findById(41);
        System.out.println(user2);
        System.out.println(user1 == user2);
    }      
MyBatis一級緩存中增删改要送出事務,查的話就不用

查了發現是

增删改要送出事務異常復原 不然資料庫是不改變的 查的話就不用