【Mybatis】Mybatis基本构成

  • SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
  • SqlSessionFactory:依靠工厂来生成SqlSession(会话)
  • SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口。
  • SQL Mapper:它是MyBatis新设计的组件,它是由一个java接口和XML文件(或注解)构成的,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。

一、构建SqlSessionFactory

每个MyBatis的应用都是以SqlSessionFactory的实例为中心的。SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder获得。但是需要注意SqlSessionFactory是一个工厂接口而不是实现类,它的任务是创建SqlSession。SqlSession类似于一个JDBC的Connection对象,MyBatis提供了两种模式去创建SqlSessionFctory:一种是XML配置的方式;另一种是代码的方式。能够使用配置文件的时候,我们尽量要用配置文件。

这里我们的Configuration的类全限定名为org.apache.ibatis.session.Configuration,它在MyBatis中将以一个Configuration类对象的形式存在,而这个对象将存在于整个Mybatis应用的生命期中,以便重复读取和运用。在内存中的数据是计算机系统中读取速度最快的,我们可以解析一次配置的XML文件保存到Configuration类对象中,方便我们从这个对象中获取配置信息,性能高。单例占用空间小,基本不占用存储空间,而且可以反复使用。Configuration类对象保存着我们配置在MyBatis的信息。在MyBatis中提供了两个SqlSessionFactory的实现类,DefaultSqlSessionFactory和SqlSessionManager.不过SqlSessionManager目前还没有使用,MyBatis中目前使用的是DefaultSqlSessionFactory.

1.1 使用XML方式创建

如下我们配置一个简单的XML,包含获取数据库连接实例的数据源(DataSource)、决定事务范围和控制方式的事务管理器(TransactionManager)和映射器(SQL Mapper).

<?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">
	<!--通过这个配置文件,完成mybatis与数据库的连接  -->
<configuration>
<!-- 定义数据库信息,默认使用development数据库构建环境 -->
	<environments default="development">
		<environment id="development">
		<!-- 采用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 配置数据库链接信息 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="learn" />
			</dataSource>
		</environment>
	</environments>
	<!-- 定义映射器 -->
	<mappers>
		<mapper resource="com\slp\dao\mapping\Role.xml" />
	</mappers>
</configuration>

  

使用配置文件创建SqlSessionFactory:

private static SqlSessionFactory sqlSessionFactory = null;
	public static SqlSessionFactory getSqlSessionFactory(){
		InputStream inputStream = null;
		if(sqlSessionFactory == null){
			try {
			String resource = "mybatis_config.xml";
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
			return sqlSessionFactory;
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		return sqlSessionFactory;
	}

1.2使用代码方式创建

  

猜你喜欢

转载自www.cnblogs.com/dream-to-pku/p/9087826.html