一. MyBatis系列:第一个MyBatis工程
本文将使用最小化配置及代码来开发一个MyBatis示例,以此来了解我们要开发一个MyBatis项目所需要的最小资源。
开发环境
Eclipse Java EE: Luna Release (4.4.0)
JDK: java v 1.8.x
MyBatis:3.2.8
MySQL:5.6.15
MyBatis 3.2.8 依赖的 jar 包可以在 http://mvnrepository.com/artifact/org.mybatis/mybatis/3.2.8 处发现和下载

导入jar包的说明:
mybatis(必需):mybatis 组件包
junit(可选):用于支持编写单元测试
mysql-connector-java(必选):用于连接目标数据库的jdbc驱动包
commons-loggin, log4j(可选):用于显示mybatis运行时的日志输出
pom.xml 依懒包配置
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.8</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
工程目录结构

本文中所使用的是 Maven 工程项目,也可以使用本地 jar 包导入工程;
User.java 为实体模型类
MybatisFirstTest.java 为单元测试类
mapper/user.xml 为实体mapper映射文件
log4j.properties 为日志输出配置文件
MybatisConfig.xml 为MyBatis的全局配置文件
数据库表结构
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(32) NOT NULL, `birthday` date DEFAULT NULL, `sex` char(1) DEFAULT NULL, `address` varchar(256) DEFAULT NULL, PRIMARY KEY (`id`) );
MyBatisConfig.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"> <!-- 配置该工程所使用的事务管理器类型,JDBC 为 JdbcTransactionFactory.class 的别名 --> <transactionManager type="JDBC" /> <!-- 配置数据源类型, POOLED 为 PooledDataSourceFactory.class 的别名 --> <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="123456" /> </dataSource> </environment> </environments> <mappers> <!-- 配置工程所使用的 User 的 Mapper 映射文件路径 --> <mapper resource="mapper/user.xml"/> </mappers> </configuration>
为了能输出日志,还需配置 log4j.properties
# Global logging configuration log4j.rootLogger=DEBUG, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
User 实体模型类
public class User {
public int id;
public String username;
public Date birthday;
public String sex;
public String address;
}
User.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">
<mapper namespace="test">
<select id="getUserById" parameterType="int" resultType="cn.xleos.mybatisfirst.po.User">
SELECT * FROM user WHERE id = #{value}
</select>
</mapper>
单元测试代码
package cn.xleos.mybatisfirst.test;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import cn.xleos.mybatisfirst.po.User;
public class MybatisFirstTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws Exception {
// 1. 读取 MybatisConfig.xml 自定义命名的全局配置文件.
// getResourceAsStream 使用的资源路径
// getUrlAsStream 使用的是文件路径
InputStream inputStream = Resources.getResourceAsStream("MybatisConfig.xml");
// 2. 使用sqlSession的工厂构造器来读入全局配置,再生成一个sqlSession工厂.
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void getUserByIdTest() {
// 3. 通过 sqlSession 工厂打开一个 sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 4. 使用 selectOne 来调用 user.xml 配置中的(命名空间+statementId) text.getUserById 节的SQL语句
// 并传入简单类型参数值 1
User user = sqlSession.selectOne("test.getUserById", 1);
System.out.println(user);
}finally{
sqlSession.close();
}
}
}
以下是单元测试日志输出,可以方便的查看MyBatis所产生的SQL脚本,以及数据库连接的状态;
DEBUG [main] - Opening JDBC Connection DEBUG [main] - Created connection 660143728. DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2758fe70] DEBUG [main] - ==> Preparing: SELECT * FROM user WHERE id = ? DEBUG [main] - ==> Parameters: 1(Integer) DEBUG [main] - <== Total: 1 User [id=1, username=王五, birthday=null, sex=2, address=null] DEBUG [main] - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@2758fe70] DEBUG [main] - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@2758fe70] DEBUG [main] - Returned connection 660143728 to pool.

浙公网安备 33010602011771号