您的位置:首页 > 产品设计 > UI/UE

mybatis_user_guide(2)mybatis3.4.0快速入门

2016-06-18 09:03 726 查看
【0】README
0)以下部分内容转自:“mybatis v.3.4.0 User Guide”;
1)本文旨在梳理 如何 构建 mybatis  环境,与 db 连接,且采用 JUnit 搭建其测试用例;
2)本文的环境配置都是基于纯 mybatis 的 jar 包,没有和 spring 或 springmvc 等第三方框架结合;测试用例通过 JUnit 来做;
3)for complete source code including mybatis jar and source jar, please visit  https://github.com/pacosonTang/MyBatis/tree/master/mybatis_user_guide2

【1】mybatis 核心对象的作用域和生命周期
1)核心对象:

1.1)SqlSessionFactoryBuilder:用来创建SqlSessionFactory 对象; 一旦使用该对象创建了 SqlSessionFactory 对象后,它就可以被 jvm 销毁了,故其最佳作用域是在方法内,即在方法内部声明 SqlSessionFactoryBuilder
对象来创建 SqlSessionFactory;(干货——创建完 SqlSessionFactory 实例后,SqlSessionFactoryBuilder 就可以被销毁了)
1.2)SqlSessionFactory:用来创建SqlSession对象;该实例应该在应用程序执行期间都存在;不需要每次操作数据库是都重新创建它,所以应用它的最佳方式是写一个单例模式来创建;(干货——采用单例模式来创建 SqlSessionFactory)
package com.mybatis.service;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class BaseService {
protected static SqlSessionFactory sqlSessionFactory;

public BaseService() {
sqlSessionFactory = createSqlSessionFactory();
}

private static SqlSessionFactory createSqlSessionFactory() {
if(sqlSessionFactory == null) {
String resource = "mybatis-config.xml";
InputStream inputStream = null;

try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
return new SqlSessionFactoryBuilder().build(inputStream);
} else {
return sqlSessionFactory;
}
}

public SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}

1.3)SqlSession:用来获取映射器;每个线程都有它自己的 SqlSession实例,该实例是不能被共享且是线程不安全的;它的最佳作用域是request 请求 或 方法作用域;即每一次request 请求都要创建一个 SqlSession 实例;(不能再干货——每次访问结果后,请务必关闭
SqlSession)


package com.mybatis.service;

import org.apache.ibatis.session.SqlSession;

import com.mybatis.dao.BlogMapper;
import com.mybatis.model.Blog;

public class BlogService extends BaseService {
private SqlSession session;

public BlogService() {
super();
session = sqlSessionFactory.openSession();
}

public SqlSession openSession() {
return sqlSessionFactory.openSession();
// sqlSessionFactory 由 BaseService 创建.
}

public Blog selectBlogById() {

// method2. strongly recommended.
session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.
getMapper(BlogMapper.class);
return mapper.selectBlog(1);
} finally {
session.close();
}

/*try { // method1.
Blog blog = session.selectOne("com.mybatis.dao.BlogMapper.selectBlog", 1);
return mapper.selectBlog(1);
} finally {
session.close();
}*/

}
}


2)映射器:要知道 mybatis 可以对方法进行映射,将 数据库访问方法的输入和输出参数都看做是对象;(干货——mybatis
可以对方法进行映射,将 数据库访问方法的输入和输出参数都看做是对象,多个输入参数添加到Map)


step1)获取映射器:它是有 上述提到到 SqlSession 得到的;
step2)调用该映射器的相关方法: 与数据库进行交互, Bingo;
Attention)参见 上面 com.mybatis.service.BlogService.java;

【2】mybatis 环境配置

step1)获取 mybatis的 jar 和 source jar, 安装 generator mybatis的插件,参见 http://blog.csdn.net/pacosonswjtu/article/details/51693186,当然也可以maven
自行构建;
step2)建立数据库和数据库表;



step3)修改 generatorConfig.xml文件,然后利用generator 自动生成 mybatis 映射文件



step4)配置mybatis-config.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>
<properties resource="jdbc.properties" />
<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="com/mybatis/dao/BlogMapper.xml" />
</mappers>
</configuration>


step4.1)建立 mybatis-config.xml文件用到的 jdbc.properties 属性文件;
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/t_mybatis
username=root
password=root
#定义初始连接数
initialSize=0
#定义最大连接数
maxTotal=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000


step4.2)配置 mybatis-config.xml文件用到的 刚刚生成的 BlogMapper.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="com.mybatis.dao.BlogMapper">
<select id="selectBlog" resultType="com.mybatis.model.Blog">
select * from Blog where id = #{id}
</select>
</mapper>


Attention)至此,mybatis的环境搭建已经完毕,请依照个人习惯,将上述映射文件,配置文件放入到 习惯性的 package 下面;(package 变了,注意要修改相关的 xml 文件)

【3】建立测试用例
1)测试用例如下:
public class MyTest {

@Test
public void test1() {
BlogService service = new BlogService();
Blog blog = service.selectBlogById();
System.out.println(blog.getTitle());
}
}

2)测试结果(Bingo):



【4】梳理 mybatis 从 client 到db 的 调用过程;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: