首先什么是MyBatis呢?要找到这个问题的答案,当然最准确的说法肯定在开发出它的人那,谁是开发它的人呢。然后...
我们就要用到学软件必不可少的神器了 https://github.com/ , 如果不知道github的话,赶快去百度谷歌搜索,知道了之后就注册一个github账户,并学会GitHub的使用,由于这篇文章重点不再这里,所以不会专门讲这些操作。
我们在GitHub上搜索MyBatis,并进入仓库在ReadMe.md里面,可以找到我们想要的答案。
虽然笔者的英文水平一般,但还是可以翻译个大概意思出来的-MyBatisSQL映射框架,它使得我们更容易的在应用中使用关系型数据库。MyBatis使用XML描述符或注解的方式联系对象和存储过程或者SQL语句。简单是MyBatis在对象关系映射工具中的最大优势。
简单,容易这应该是最吸引我们的地方了。
然后,我们在README最下面点击Dowmload Latest(最近的一个版本),这里下的是3.1.1的。
接下来,我们来通过一个示例来获取SqlSession。
第一步:通过myeclipse创建一个Web或者是java项目,项目目录结构如下
第二步:新建一个Configuration.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="mysql_development">
<!-- 连接环境信息 -->
<environment id="mysql_development">
<!-- mysql使用什么事物管理方式 -->
<transactionManager type="JDBC">
<property name="" value=""/>
</transactionManager>
<!-- mybatis使用连接池方式来获取连接对象 -->
<dataSource type="POOLED">
<!-- 配置数据库连接信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
第三步:写MyBatisUtil.java,维护数据库连接的工具类。
package com.cxspace.db;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
private static SqlSessionFactory sqlSessionFactory;
//加载Configuration.xml配置文件
static{
try {
Reader reader = Resources.getResourceAsReader("com/cxspace/config/Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
/*
* 禁止外部new来调用
*/
private MyBatisUtil(){
}
/*
* 获取SqlSession
*/
public static SqlSession getSqlSession(){
//从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
//如果SqlSession为空
if (sqlSession == null) {
//在SqlSessionFactory非空的情况下,获取SqlSession对象
sqlSession = sqlSessionFactory.openSession();
//将SqlSession对象与当前线程绑定在一起
threadLocal.set(sqlSession);
}
//返回SqlSession对象
return sqlSession;
}
/*
* 关闭SqlSession与当前线程分开
*/
public static void closeSqlSession(){
//从当前线程中获取SqlSession对象
SqlSession sqlSession = threadLocal.get();
//如果SqlSession对象非空
if (sqlSession != null) {
//关闭
sqlSession.close();
//放开当前线程与SqlSession对象的关系,让GC尽快回收
threadLocal.remove();
}
}
}
获取测试
public static void main(String[] args) {
MyBatisUtil.getSqlSession().getConnection();
System.out.println("获取连接成功");
}