mybatis数据库连接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">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/forest"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载类的路径 -->
<mapper class="com.yingside.dao.WormMapper"></mapper>
<mapper class="com.yingside.dao.RegionMapper"></mapper>
<mapper resource="com/yingside/mapper/RegionMapper.xml"></mapper>
</mappers>
</configuration>
获取配置文件,获取sqlSessionFactory工厂
public class SqlSessionFactoryUtil {
private static SqlSessionFactory sqlSessionFactory;
private SqlSessionFactoryUtil() {
}
//synchronized 每次只允许一个资源访问
synchronized public static SqlSessionFactory getSqlSessionFactory(){
if (sqlSessionFactory == null) {
InputStream is = null;
try {
//加载 mybatis-config.xml 配置文件
is = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
//获取sqlSessionFactory工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
}
return sqlSessionFactory;
}
}
创建SqlSessionUtil类来获取SqlSession 的对象
public class SqlSessionUtil {
//ThreadLocal 线程的变量池
//把每一个用户创建的sqlSession放入到线程池中,如果线程池中没有就创建,如果已经有了
//就直接从线程池中拿去出来
//所以ThreadLocal保存的是键值对
private static ThreadLocal<SqlSession> tl = new ThreadLocal<>();
public static SqlSession getSqlSession(){
//先从线程池中拿取sqlsession
SqlSession sqlSession = tl.get();
//如果sqlsession==null,说明线程池中没有
if(sqlSession == null){
sqlSession = SqlSessionFactoryUtil.getSqlSessionFactory().openSession();
//把获取到的sqlSession放入线程池
tl.set(sqlSession);
}
return sqlSession;
}
public static void commit(){
SqlSession sqlSession = tl.get();
//从线程池中拿取到SqlSession
//执行sqlSession.commit();并且把线程池中的内容清空
if (sqlSession != null) {
sqlSession.commit();
tl.set(null);
}
}
}
如何使用上述配置文件
//直接调用静态方法SqlSessionUtil.getSqlSession()/获取一个SqlSession的对象文件
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
//再通过获取到的sqlSession的对象文件找到xml中的WormMapper配置地址的到该类的对象
WormMapper mapper = sqlSession.getMapper(WormMapper.class);
命名空间的名称namespace一般都是包名加类名!规范 <mapper namespace="com.yingside.mapper.RegionMapper"> sql语句书写在命名空间中 </mapper>