1.1 MyBatis介绍
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache softwarefoundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old JavaObjects,普通的 Java对象)映射成数据库中的记录。
每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。
用xml文件构建SqlSessionFactory实例是非常简单的事情。推荐在这个配置中使用类路径资源(classpathresource),但你可以使用任何Reader实例,包括用文件路径或file://开头的url创建的实例。MyBatis有一个实用类----Resources,它有很多方法,可以方便地从类路径及其它位置加载资源。Mybatis也是一个ORM框架,是一个基于JDBC的开源框架.其中数据库和相关表必须手工创建。
1.2 MyBatis环境搭建
环境搭建步骤
第一步:导入需要的jar包放入src/libs文件夹下,并部署
第二步:配置MyBatis的配置文件并注册实体类的映射文件
MyBatis.cfg.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>
<!--
default="development":指定当前环境的模式,只有两个取值:
development: 开发模式
worker:工作模式
-->
<environments default="development">
<!-- id="development":指定当前的环境模式,只需要注意的是:当前id的取值必须和environments节点中default的取值相同 -->
<environment id="development">
<!-- type="JDBC":指定当前的事务管理器为JDBC,大小写不敏感 -->
<transactionManager type="JDBC"/>
<!--
type="POOLED":指定当前数据源的类型为连接池类型
-->
<dataSource type="POOLED">
<!-- 数据库连接信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///test"/>
<property name="username" value="root"/>
<property name="password" value="zxczxc"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册自定义的映射文件 -->
<mapper resource="com/gu/domain/Person.cfg.xml"/>
</mappers>
</configuration>
以上xml信息源于手册中给定的配置规范,更多使用方可以参考手册。
实体类的映射文件配置如下:
Person.cfg.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace="com.gu.domain.PersonMapper":取值必须唯一,一般建议使用包名+类名 -->
<mapper namespace="com.gu.domain.PersonMapper">
<!--
id:唯一表示当前xml片段的,必须保证在指定的命名空间中队形的id值唯一;在java程序中,我们通过namespace+id值唯一确认我们操作的xml片段;
parameterType="int":指定输入参数的数据类型
resultType="Blog":指定输出参数的数据类型,或者是集合中元素的数据类型
-->
<select id="selectById" parameterType="int" resultType="com.gu.domain.Person">
select * from t_person where id = #{id} ;
</select>
</mapper>