mybatis_user_guide(2)mybatis3.4.0快速入门

【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 的 调用过程;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值