发表于: 2019-11-05 23:17:53

1 982


今天完成的事情:

修改了一个mybatis的BUG

看《深入浅出mybatis》

mybatis的架构

 1.核心配置文件mybatis-config.xml

      配置一些共用的全局配置东西
        数据源,缓存,日志,配置mapper文件路径,等等
  2.映射文件XXXMapper.xml
    配置sql语句,输入参数类型 返回结果集类型
  3.SqlSessinoFactory(会话工厂)
    通过加载核心配置文件的内容来创建会话(sqlSession)
  4.sqlSession(会话)
    通过会话中的方法来调用映射文件中的sql语句,就相当于可以执行sql语句
  5.Executor执行器(MyBatis框架内部的东西,框架会自动调用)
    分基本执行器和缓冲执行器
    当我们执行SqlSession的时候,框架内部就会自动调用Executor
  6.MapperStatement:
    内部封装对象
    抽取映射文件xml中的内容(原本是string字符串)
    抽取当中的sql语句,参数 返回集 转换成相对应的java对象

mybatis流程

(1)加载配置并初始化
触发条件:加载配置文件
处理过程:将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。
(2)接收调用请求
触发条件:调用Mybatis提供的API
传入参数:为SQL的ID和传入参数对象
处理过程:将请求传递给下层的请求处理层进行处理。
(3)处理操作请求
触发条件:API接口层传递请求过来
传入参数:为SQL的ID和传入参数对象
处理过程:
(A)根据SQL的ID查找对应的MappedStatement对象。
(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。
(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。
(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。
(E)释放连接资源。
(4)返回处理结果将最终的处理结果返回。

学习junit并测试

对此进行总结:

1.测试方法上必须使用@Test

2.测试方法必须使用 public void进行修饰

3.新建一个源代码目录来存放测试代码

4.测试类的包应该和被测试类的包一样

5.测试单元中的每个方法一定要能够独立测试,其方法不能有任何依赖

---

1.Failure 一般由测试单元使用断言方法判断失败引起的,这个报错,说明测试点发现了问题,即程序输出的结果和我们预期的不一样

2.error 是由代码异常引起的,它可以产生代码本身的错误,也可以是测试代码中的一个隐藏bug

!测试用例不是用来证明你是对的,而是用来证明你没错

---

关于Junit运行流程

@BeforeClass

修饰的方法会在所有方法被调用前执行,且该方法时静态的,所以当测试类被加载后就接着运行它,而且在内存中他只会存在一份实例,他比较适合加载配置文件(针对所有测试,只执行一次 )

@AfterClass

所修饰的方法通常用来对资源管理,如关闭数据库连接(针对所有测试,只执行一次 )

@Before和@After 会在每个测试方法前后各执行一次

@Test:测试方法,在这里可以测试期望异常和超时时间

@Ignore:忽略的测试方法  

————————————————

测试我的mybatis

PersonMapper personMapper=sqlSession.getMapper(PersonMapper.class);

Person person=new Person();

person.setSex("女");

person.setName("王全真性感");

personMapper.updatePerson(person);

sqlSession.commit();

sqlSession.close();

}

@Test

   public void getPerson(){

SqlSession sqlSession=MybatisTools.getSession();

PersonMapper personMapper=sqlSession.getMapper(PersonMapper.class);

Person person=new Person();

person.setId(666666);

person=personMapper.getPerson(person.getId());

System.out.println(person);

sqlSession.commit();

sqlSession.close();

}

@Test

   public void getAllPerson(){

SqlSession sqlSession=MybatisTools.getSession();

PersonMapper personMapper=sqlSession.getMapper(PersonMapper.class);

List<Person>personList= personMapper.getAllPerson();

for(Person person:personList){

System.out.println(person);

}

sqlSession.commit();

sqlSession.close();

}


明天计划的事情:学习spring,自己写BEAN
遇到的问题:java.io.IOException: Could not find resource mapping/UserMapper.xml IDEA中MAVEN不编译SRC 要该POM配置文件
收获:mybatis的运行流程 功能架构  能编写测试类

电脑升级了(加了固态和内存条)




返回列表 返回列表
评论

    分享到