MyBatis中SQLSessionFactory和SqlSession的简介以及配置文件使用
学习要点
SQLSessionFactory和SqlSession的学习
MyBatis的配置文件的学习
SQLSessionFactory和SqlSession的学习
SQLSessionFactory和SqlSession是MyBatis中常用的对象.
SQLSessionFactory使用SQLSessionFactoryBuilder对象获得的,SQLSessionFactoryBuilder可以通过预先定制的configuration或者xml配置文件的实例构建出SQLSessionFactory,SQLSessionFactory是线程安全的,一旦被创建,。应用在执行期间都会存在,SQLSessionFactory也是创建SqlSession的工厂。可以通过SqlSession openSession().创建SqlSession对象。
-----------------------------------------------------------
SqlSession 对象是MyBatis的关键对象,是执行持久层操作的对象,类似于JDBC的Connection,他是应用程序与持久储存层之间执行交互的操作的一个单线程对象,也是Mybatis执行持久话操作的关键对象。SqlSession底层对jdbc进行了封装,在使用的时候可以进行数据库的各种操作,使用结束之后,还需要使用finally进行关闭连接,
在实际应用中很少直接使用DriverManager来获取数据库连接,通常都会使用dataSource来获取数据库连接,SqlSessionFactory底层封装了DataSource
MyBatis的配置文件的学习
看下面的代码,来认识一下MyBatis的初始化教程
/*获取当前mybatis配置文件*/
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("mybatis-config.xml");
/*创建sqlSessionFactory对象*/
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
/*创建SQLSession对象操作持久层对象*/
SqlSession session = sqlSessionFactory.openSession();
序列图:
初始化讲解:
看到MyBatis初始化进行的操作之后,我们在来看看初始化时可以进行的一些设置来构建出SqlSessionFactoryBuilder。
MyBatis配置文件的结构
MyBatis配置文件中大标签configuration下子标签包括:
configuration
|--- properties
|--- settings
|--- typeAliases
|--- typeHandlers
|--- objectFactory
|--- plugins
|--- environments
|--- |--- environment
|--- |--- |--- transactionManager
|--- |--- |__ dataSource
|__ mappers
- MyBatis配置文件的结构
- MyBatis配置文件包含了影响MyBatis的行为信息,顶层的配置信息为:
- properties属性
这些属性都是可以外部配置或者动态替换的,既可以在典型的java中配置也可以在properties元素的子元素中来传递
- settings设置,这是一个MyBatis的极其重要的调整设置,它们会改变的MyBatis的运行时的行为,
- typeAliases类型命名
就是为java类设置一简短的类名。设置之后,可以在任何地方用简短的别名来代替全限定的类名.
使用:
- typeHandlers类型处理器
无论是Mybatis在预处理(preparedStatements)中设置一个参数时,还是从查询出来的结果集中取出一行数据时,都是需要把数据转换为java中的对象,下面是转换对象时默认的转换方式:
- objectFactory对象工厂
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。默认情况下,我们不需要配置,mybatis会调用默认实现的objectFactory。 除非我们要自定义ObjectFactory的实现, 那么我们才需要去手动配置。
配置自定义的ObjectFactory
- environments环境配置
MyBatis的环境配置其实就是数据源的配置,MyBatis可以配置多种环境,这种机制使得MyBatis可以将sql语句映射应用到不同的数据库中。例如正式,开发,测试等需要使用不同的配置,多个生产数据库使用相同的Sql映射等。
注意:
环境配置实例:
- mapper映射器—具体Mapper配置文件详细
- properties属性
- MyBatis配置文件包含了影响MyBatis的行为信息,顶层的配置信息为: