对增删改查操作进行测试
// 首先需要在 test 文件夹中创建测试类 //在处理测试时,先加载 init() 处理完测试后,加载 destory() //在执行方法前执行 @Before public void init() throws Exception { //1.读取配置文件 in = Resources.getResourceAsStream("mybatis-config.xml"); //2.创建构建者对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //3.创建 SqlSession 工厂对象 factory = builder.build(in); //4.创建 Dao 接口的实现类 sqlSession = factory.openSession(); //5.创建代理对象 userMapper= sqlSession.getMapper(UserMapper.class); } /** * 执行完方法后执行 */ @After public void destory(){ sqlSession.commit(); try { sqlSession.close(); //释放资源 in.close(); } catch (IOException e) { e.printStackTrace(); } } //查询 public class Test { private InputStream in; private SqlSessionFactory factory; SqlSession sqlSession; private UserMapper userMapper; //根据id查询 @Test public void test1(){ User user = userMapper.getInfo("1"); System.out.println(user); } @Test public void test2(){ List<User> userList = userMapper.findAll(); System.out.println("查询的所有数据:" + userList.toString()); } //模糊查询 @Test public void test3(){ List<User> user = userMapper.findByName("张三"); System.out.println("根据名字模糊查询结果为:"+user.toString()); } } //新增一条记录 @Test public void test4(){ User user = new User(); user.setId("2"); user.setName("张三四"); user.setAge(21); boolean a = userMapper.insert(user); if(a){ System.out.println("插入成功!!!!!!"); } else { System.out.println("插入失败!!!!!!"); } } //根据 id 更新用户信息 @Test public void test5(){ User user = new User(); user.setId("1"); user.setName("张三四五"); user.setAge(20); boolean a = userMapper.updateUser(user); if(a){ System.out.println("修改成功!!!!!!"); } else { System.out.println("修改失败!!!!!!"); } } //根据id删除用户信息 @Test @Test public void test6(){ boolean a = userMapper.removeById("2"); if(a){ System.out.println("插入成功!!!!!!"); } else { System.out.println("插入失败!!!!!!"); } } Mybatis的一级缓存和二级缓存 一级缓存 一级缓存介绍在应用运行过程中,我们有可能在一次数据库会话中,执行多次查询条件完全相同的 SQL,MyBatis 提供了一级缓存的方案优化这部分场景,如果是相同的 SQL 语句,会优先命中一级缓存,避免直接对数据库进行查询,提高性能。具体执行过程如下图所示。