第一轮总结性笔记

逆水行舟 —— MyBatis 随笔 第1张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

这是一个很漫长的过程,我买了套课程,将在日后记录学习笔记,取名为逆水行舟系列

MyBatis的基础

根据MyBatis的官方介绍:

逆水行舟 —— MyBatis 随笔 第2张

整个测试项目结构如下:使用Maven架构项目

 逆水行舟 —— MyBatis 随笔 第3张

pom.xml :  所需依赖如下

逆水行舟 —— MyBatis 随笔 第4张

 <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.46</version>
  </dependency>

逆水行舟 —— MyBatis 随笔 第5张

mybatis-config.xml : mybatis的配置文件

逆水行舟 —— MyBatis 随笔 第6张

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "mybatis-3-config.dtd" >
<configuration>
  <!-- 可以配置多个运行环境,但是每个SqlSessionFactory 实例只能选择一个运行环境 -->
  <environments default="work">
      <environment id="work">
          <transactionManager type="JDBC"></transactionManager>
          <!-- UNPOOLED POOLED JNDI -->
          <dataSource type="UNPOOLED">
              <property name="driver" value="com.mysql.jdbc.Driver" />
              <property name="url" value="jdbc:mysql://localhost:3306/mytest" />
              <property name="username" value="root" />
              <property name="password" value="root" />
          </dataSource>
      </environment>
  </environments>
  <mappers>
      <mapper resource="StudentMapper.xml"/>
  </mappers>
</configuration>

逆水行舟 —— MyBatis 随笔 第7张

StudentMapper.xml : 映射文件

逆水行舟 —— MyBatis 随笔 第8张

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.test.mybatis.dao.StudentMapper">
   
  <!--保存一个学员信息-->
  <insert id="saveStudent" parameterType="com.test.mybatis.pojo.Student">
      insert into student values(default,#{username},#{address},#{age},#{hobby})
  </insert>
   
</mapper>

逆水行舟 —— MyBatis 随笔 第9张

测试代码:

逆水行舟 —— MyBatis 随笔 第10张

public class MainTest {
  public static void main(String[] args) throws IOException {
      Student stu = new Student("Tonny","断背山",22,"吃喝嫖赌");
      InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
      SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
      SqlSession sqlSession = factory.openSession();
      sqlSession.insert("saveStudent", stu);
      sqlSession.commit();
      sqlSession.close();
  }
}

逆水行舟 —— MyBatis 随笔 第11张

运行后,我们向数据库插入了一个学员信息,检测程序运行情况:

 逆水行舟 —— MyBatis 随笔 第12张

MyBatis的执行流程

我们看大概的的执行过程:源码部分真的太难了,我这菜鸟暂时还是看不懂,只能知道这个大概 

1.将sql语句和数据库相关的配置保存在配置文件中

2.SqlSessionFactoryBuilder().build(InputStream is),将配置信息读取并封装到 configuration 对象中

  并将其作为属性交给SqlSessionFactory接口的实现DefaultSqlSessionFactory;

3.SqlSessionFactory工厂在创建SqlSession对象时提供相关属性:

  1> Configuration对象 贯穿MyBatis执行的整个流程

  2> dirty :true    sql执行成功后 ,可以事务提交

      false   sql语句发送失败,事务进行回滚

  3> Executor执行器对象(真正动手的对象)

      创建 Statement对象,在创建过程中依靠MapperStatement对象将赋值内容和sql占位符进行绑定

\4. SqlSession.commit() 根据 dirty的Boolean 值确定是提交还是回滚

\5. SqlSession.close()   断开连接

第二轮总结性笔记

通过MyBatis核心配置文件如何找到映射文件的几种方式

在核心配置文件中有一个标签 <mappers> </mappers>

其中允许存放的类型有如下几种,分别代表了不同的读取策略和响应的规则:逆水行舟 —— MyBatis 随笔 第13张

逆水行舟 —— MyBatis 随笔 第14张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄