20.05.03学习记录

21.05.03

mybatis中运用的主要类的介绍

1)Resources : mybatis中的一个类,负责读取主配置文件

   //1.定义mybatis主配置文件的名称,从类路径开始
    String config="mybatis.xml";
    //2.读取这个config表示的文件
    InputStream in= Resources.getResourceAsStream(config);

2)SqlSessionFactoryBuilder : 创建SqlSessionFactory对象,每一个MyBatis的应用程序的入口是SqlSessionFactoryBuilder。

   //3.创建了SqlSessionFactoryBuilder对象
    SqlSessionFactoryBuilder bulider=new SqlSessionFactoryBuilder();
    //4.创建SqlSessionFactory对象
    SqlSessionFactory factory=bulider.build(in);

3)SqlSessionFactory :SqlSessionFactory对象是一个重量级对象,它的主要功能是创建SqlSession对象,和SqlSessionFactoryBuilder对象一样,没有必要每次访问Mybatis就创建一次SqlSessionFactory,通常的做法是创建一个全局的对象就可以了。
SqlSessionFactory 作用:获取SqlSession对象。

   //5.获取SqlSession对象,从SqlSessionFactory中获取SqlSession
    SqlSession sqlSession=factory.openSession();

openSession()方法说明:
1.openSession() : 无参数的,获取的是非自动提交事务的SqlSession对象
2.openSession(boolean):openSession(true) 获取自动提交事务的sqlSession.
openSession(false) 非自动提交事务的sqlSession.
4)SqlSession:
SqlSession接口: 定义了操作数据的方法
使用要求:SqlSession对象不是线程安全的,需要在方法内部使用,在执行sql语句之前,使用openSession()方法,在执行完sql语句后,需要关闭它,执行SQL Session.close().

MyBatis 动态代理

mybatis根据dao的方法调用,获取执行sql语句的信息。
mybatis根据你的dao接口,创建出一个dao接口的实现类,并创建这个类的对象。完成SqlSession调用方法,访问数据库。

1.dao对象,类型是StudentDao,全限定名称和namespace是一样的。
2.当发名称,selectStudents,这个方法就是mapper文件中的id值selectStudents
3.通过dao中方法的返回值也可以确定mybatis要调用的SqlSession的方法
如果返回值是List,调用的是SqlSession.selectList()方法
如果返回值不是List,看mapper文件中的标签是,就会调用SqlSession的insert,upate等方法
使用时需要使用sqlsession.getMapper()获取到接口然后实现增删改查。getMapper()通过IStudentDao这个名字找到mapper.xml中namespace = IStudentDao的mapeer后返回给dao,这个dao就将dao接口文件和mapper.xml文件链接在一起。dao调用接口文件的方法后,接口文件的放法去找xml文件中对应的方法名的sql来实现增删查改。

public class TestMybatis {
@Test
   public void testSelect(){
    SqlSession sqlSession= MyBatisUtils.getSqlSession();
    StudentDao dao=sqlSession.getMapper(StudentDao.class);
    //调用dao方法,执行数据库的操作
    List<Student> studentList=dao.selectStudents();
    for(Student stu:studentList){
        System.out.println(stu);
    }

}
}
上一篇:Mybatis3详解(十六)——Mybatis运行原理之SqlSessionFactory的构建过程


下一篇:mybatis执行流程