数据库连接配置
<!-- 配置MyBatis3的环境 -->
<environments default="env">
<!-- 配置一个环境 -->
<environment id="env">
<!-- 配置事务管理器 JDBC(有事务)、MANAGED(托管) -->
<transactionManager type="JDBC" />
<!-- 配置数据源 JNDI(web服务器方式定义数据源)、POOLED(自带连接池)、UNPOOLED(不带连接池) -->
<dataSource type="POOLED">
<!-- 连接数据库驱动 -->
<property name="driver" value="com.mysql.jdbc.Driver" />
<!-- 连接数据库URL -->
<property name="url" value="jdbc:mysql:///wkmj_wechat?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" />
<!-- 连接数据库用户名 -->
<property name="username" value="root" />
<!-- 连接数据库密码 -->
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
JAVA代码
/**
- 获取SqlSession和关闭SqlSession的基础类
- @author Administrator * */
public class BaseDao {
private static SqlSessionFactory factory;
/**
* 线程对象
/
private static ThreadLocal threadLocal = new ThreadLocal<>();
/*通过静态块初始化SqlSessionFactory,因为静态块只会在类第一次加载的时候执行*/
static {
try(InputStream in = Resources.getResourceAsStream("mybatis_config.xml");) {
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
System.err.println("数据库连接工厂获取失败!");
}
}
/**
* 获取SqlSession对象
* @return SqlSession
*/
public static SqlSession getSqlSession(){
//通过ThreadLocal获取sqlSession对象
//第二次进来的时候就可以从threadLocal.get()中获取
SqlSession sqlSession = threadLocal.get();
if(sqlSession == null){
//获取一个SqlSession对象
sqlSession = factory.openSession();
//并存储到ThreadLocal对象中,通过ThreadLocal对象可以方便进行线程同步管理
//前程同步交给工具管理
threadLocal.set(sqlSession);
}
return sqlSession;
}
/**
* 关闭SqlSession对象
*/
public static void closeSqlSession(){
SqlSession sqlSession = threadLocal.get();
if(sqlSession != null){
sqlSession.close();
}
threadLocal.remove();
}
}