mybatis 一级缓存测试

 @Test
    void test1() throws Exception {
        //取2个不同的 sqlSession
        SqlSession sqlSession1 = factory.openSession(true);
        SqlSession sqlSession2 = factory.openSession(true);

        EmpMapper mapper1 = sqlSession1.getMapper(EmpMapper.class);
        EmpMapper mapper2 = sqlSession2.getMapper(EmpMapper.class);

        Emp emp = mapper1.queryOneEmp(1001);
        System.out.println("sqlSession1第一次查询"+emp);

        Emp emp3 = mapper1.queryOneEmp(1001);
        System.out.println("sqlSession1第二次查询"+emp3);

        //sqlSession2 进行了数据修改
        Emp empParam = new Emp();
        empParam.setEmpno(1001);
        empParam.setEname("zhaoyun3333");
        mapper2.updateOneEmp(empParam);

        Emp emp4 = mapper1.queryOneEmp(1001);
        System.out.println("sqlSession1第三次次查询"+emp4);

       Emp emp2 = mapper2.queryOneEmp(1001);
        System.out.println("sqlSession2第一次查询"+emp2);
    }

结果:sqlSession1 第一次从数据库读取 zhaoyun2222
           sqlSesson1第二次从缓存中读取zhaoyun2222
           sqlSession2修改了数据 zhaoyun3333
           sqlSesson1第三次从缓存中读取zhaoyun2222
           sqlSesson2第一次从缓存中读取zhaoyun3333

 

但是如果修改的对象为 sqlSession1查询出来的对象,那么sqlSession2修改为zhaoyun1111,会直接改变sqlSession1的缓存

  @Test
    void test1() throws Exception {
        //取2个不同的 sqlSession
        SqlSession sqlSession1 = factory.openSession(true);
        SqlSession sqlSession2 = factory.openSession(true);

        EmpMapper mapper1 = sqlSession1.getMapper(EmpMapper.class);
        EmpMapper mapper2 = sqlSession2.getMapper(EmpMapper.class);

        Emp emp = mapper1.queryOneEmp(1001);
        System.out.println("sqlSession1第一次查询"+emp);

        Emp emp3 = mapper1.queryOneEmp(1001);
        System.out.println("sqlSession1第二次查询"+emp3);

        //sqlSession2 进行了数据修改
        //emp 为 mapper1.queryOneEmp(1001); 查询得到
        emp.setEname("zhaoyun111111");
        mapper2.updateOneEmp(emp);

        Emp emp4 = mapper1.queryOneEmp(1001);
        System.out.println("sqlSession1第三次次查询"+emp4);

       Emp emp2 = mapper2.queryOneEmp(1001);
        System.out.println("sqlSession2第一次查询"+emp2);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值