1、SqlMapperConfig.xml配置i文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="false"/>
<!--<setting name="logImpl" value="STDOUT_LOGGING"/> <!– 打印日志信息 –>-->
</settings>
<typeAliases>
<typeAlias type="com.luo.dao.UserDao" alias="User"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/> <!--事务管理类型-->
<dataSource type="POOLED">
<property name="username" value="luoxn28"/>
<property name="password" value="123456"/>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.1.150/ssh_study"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="userMapper.xml"/>
</mappers>
</configuration>
2 查询
package com.xiangwen.studymybaits;
import com.xiangwen.dao.Student;
import com.xiangwen.dao.StudentDao;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.InputStream;
public class MyTest2 {
@Test
public void test1()throws Exception{
String resource = "sqlMapperConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 通过SqlSession操作数据库
// 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
// 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
// sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
// selectOne查询出一条记录
StudentDao dao=sqlSession.getMapper(StudentDao.class);
MyClass myClass=dao.selectClass(2);
System.out.println(myClass);
// 释放资源
sqlSession.close();
}
}



2、执行到
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream)
1)解析configuration标签里的内容

2)分别解析标签里的内容,存放到configuration对象里面去

3)引入mapper文件有4种方式package,resource,url,class

4)返回一个DefaultSqlsessionFactory工厂,将configuration对象传进去

3、执行到,SqlSession sqlSession = sqlSessionFactory.openSession();
从configuration得到事务配置,

有四种execute,counfiguration对象里面executorType默认是simple,因为一级缓存开关cacheEnabled是开启的,上面最终返回的是缓存处理器


4、当执行到 StudentDao dao=sqlSession.getMapper(StudentDao.class);
通过MapperProxy实现了jdk代理类给接口生成代理对象,因为接口没有实现类,逻辑都在invoke方法里面


5、当运行到 MyClass myClass=dao.selectClass(2);
1)进入invoke方法

2)里面有个switch catch判断具体是哪种操作


3)