mybatis开始配置前的准备工作

MyBatis 是什么?

        MyBatis 是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis 几乎消 除了所有的JDBC 代码,也基本不需要手工去设置参数和获取检索结果。MyBatis 能够使用简单的 XML 格式或者注解进行来配置,能够映射基本数据元素、Map 接口和POJOs(普通 java 对象)到 数据库中的记录

准备开始

        所有的MyBatis 应用都以 SqlSessionFactory 实例为中心。SqlSessionFactory 实例通过 SqlSessionFactoryBuilder 来获得,SqlSessionFactoryBuilder 能够从XML 配置文件或者通过自 定义编写的配置类(Configuration class),来创建一个 SqlSessionFactory 实例。

从 XML 中创建 SqlSessionFactory 实例

        从 XML 中创建 SqlSessionFactory 实例非常简单。建议您使用类资源路径(classpath resource)来加载配置文件,但是您也能够使用任何方式,包括文本文件路径或者以file:// 开 头 URL 的方式。MyBatis 包括一个叫做 Resources 的工具类(utility class),其中包含了一系 列方法,使之能简单地从 classpath 或其它地方加载配置文件

String resource = "org/mybatis/example/Configuration.xml"; 
Reader reader = Resources.getResourceAsReader(resource); 
sqlMapper = new SqlSessionFactoryBuilder().build(reader);

        XML 配置文件包含 MyBatis 框架的核心设置,包括获取数据库连接的 DataSource 实例,和包 括决定事务作用域范围和控制的事务管理等。您将能够在后面的章节中找到详细的 XML 配置,在 这里我们先展示一个简单的例子:

<?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>
 	<environments default="development">
 		<environment id="development"> 
			<transactionManager type="JDBC"/> 
			<dataSource type="POOLED"> 
				<property name="driver" value="${driver}"/>
		 		<property name="url" value="${url}"/> 
				<property name="username" value="${username}"/> 
				<property name="password" value="${password}"/>
 			</dataSource> 
		</environment>
 	</environments>
	<mappers>
 		<mapper resource="org/mybatis/example/BlogMapper.xml"/>
 	</mappers>
 </configuration>

        虽然 XML 配置文件中还有很多其它的配置细节,但是,上面的示例显示了最重要的部分。注 意 XML 配置文件的头部,会使用DTD 验证文档来验证该 XML 配置文件。body 部分的environment 元素,包含了事务管理和连接池配置。Mappers 元素指定了映射配置文件--包含SQL 语句和映射 定义的XML 文件。

如何不使用 XML 来创建

        SqlSessionFactory 如果您喜欢直接通过 java 代码而不是通过 XML 创建配置选项,或者想创建您自己的配置生成 器。MyBatis 提供了一个完整的配置类(Configuration class),它提供了与XML 文件相同的配 置选项。

TransactionFactory transactionFactory = new JdbcTransactionFactory(); 
Environment environment = new Environment("development", transactionFactory, dataSource); 
Configuration configuration = new Configuration(environment); 
configuration.addMapper(BlogMapper.class); 
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

        请注意,这种方式下的配置添加一个映射类(mapper class)。映射类是包含 SQL 映射注解 的 Java 类,从而避免了使用 XML。但是,由于注解的一些局限性以及 MyBatis 映射的复杂性, XML 仍然是一些高级的映射功能(如嵌套连接映射,Nested Join Mapping)所必须的方式。基于 这个原因,如果存在 XML 文件,MyBatis 自动寻找并加载这个 XML 文件。在这种情况下, BlogMapper.xml 将会被类路径下名称为BlogMapper.class 的类加载。

从 SqlSessionFactory 获取 SqlSession

        现在您已经创建了一个SqlSessionFactory(指上面的sqlMapper),正如它名字暗示那样, 您可以通过它来创建一个 SqlSession 实例。SqlSession 包含了所有执行数据库SQL 语句的方 法。您能够直接地通过SqlSession 实例执行映射 SQL 语句。例如:

SqlSession session = sqlMapper.openSession(); 
try { 
	Blog blog = (Blog) session.selectOne( "org.mybatis.example.BlogMapper.selectBlog", 101);
    } finally { 
	session.close();
 }


        虽然这种方法很有效,MyBatis 以前版本的用户对此也可能很熟悉,但现在有一个更简便的 方式,那就是对给定的映射语句,使用一个正确描述参数与返回值的接口(如 BlogMapper.class),您就能更清晰地执行类型安全的代码,从而避免错误和异常。 如:

SqlSession session = sqlSessionFactory.openSession(); 
try { 
	BlogMapper mapper = session.getMapper(BlogMapper.class);
	 Blog blog = mapper.selectBlog(101);
} finally {
	 session.close(); 
}

今天就到这里,后期我们一起探索它们究竟是如何执行的。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值