微信登录

5 - 实现 - test - 测试

test

src/test/java/com/artchips/test/InfoTest.java

  1. import java.io.IOException;
  2. import java.io.Reader;
  3. import java.util.List;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.BeforeClass;
  9. import org.junit.Test;
  10. import com.artchips.bean.Info;
  11. public class InfoTest {
  12. private static SqlSessionFactory sqlSessionFactory;
  13. @BeforeClass // 必须配合static一起用
  14. public static void init() {
  15. try(Reader reader = Resources.getResourceAsReader("mybatis-config.xml");){
  16. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. @Test
  22. public void testSelectAll(){
  23. SqlSession sqlSession = sqlSessionFactory.openSession();
  24. try {
  25. List<Info> infoList = sqlSession.selectList("com.artchips.bean.Info.selectAllInfo");
  26. if (infoList != null && infoList.size() > 0) {
  27. infoList.forEach(info -> {
  28. System.out.println(info);
  29. });
  30. }
  31. } finally {
  32. sqlSession.close();
  33. }
  34. }
  35. }

执行过程:

(读配置)通过Resources工具类将mybatis-config.xml配置文件读入到Reader。

(创建SqlSessionFactory工厂对象)在通过SqlSessionFactoryBuilder建造类使用Reader创建SqlSessionFactory工厂对象

在创建SqlSessionFactory对象的过程中:

  • 首先解析mybatis-config.xml配置文件
  • 读取配置文件中的mapper配置后会读取全部的Mapper.xml进行具体的方法解析,这些解析完成后
  • SqlSessionFactory就包含了所有的配置属性和执行SQL的信息。

(获取SqlSession)使用时通过SqlSessionFactory工厂获取SqlSession。

(SQL查询)通过SqlSession的selectList方法查找到InfoMapper.xml中的id=”selectAll”的方法,执行SQL查询。

(返回结果)MyBatis底层使用的JDBC执行SQL,获得查询结果集ResultSet后,根据resultType的配置将结果映射到Info类的集合,返回查询结果。

(关闭sqlSession)使用完毕后一定要关闭sqlSession,避免造成过多连接没有关闭导致数据库锁或者更严重的系统异常等。