package com.itheima.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
-
@Auther: 任小虎
-
@Date: 2020/3/23 21:00
-
@Description:
*/
public class SqlSessionUtil {private static SqlSessionFactory factory = null;
static {
try {
//1.读取配置文件
InputStream in= Resources.getResourceAsStream(“SqlMapConfig.xml”);
//2.创建一个SqlSessionFactory工程
factory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}}
public static SqlSession getSession(){
return factory.openSession();
}
}
测试类:
@Test
public void test(){
SqlSession session = SqlSessionUtil.getSession();
IUserDao mapper = session.getMapper(IUserDao.class);
List all = mapper.findAll();
for (User user : all) {
System.out.println(user);
}
}
心得:其实我们一般在抽取工具类封装的时候,把一些固定代码抽取出来,如这次代码,我们是无法直接抽取SqlSession的,因为它不是固定的,它还需要生成代理对象session.getMapper(xxx.class),所以我们向上抽取一级,抽取SqlSessionFactory,只需要返回一个SqlSession对象即可