我们发现没有工具类的时候编写Mybatis的代码很多都是一样的步骤
例如
这里使用到了Junit进行测试,也可以编写main方法进行测试
@Test
public void testInsertCar(){//这里使用到了Junit进行测试
// 编写mybatis程序
SqlSession sqlSession = null;
try {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
// 开启会话(底层会开启事务)
sqlSession = sqlSessionFactory.openSession();
// 执行SQL语句,处理相关业务
int count = sqlSession.insert("insertCar");
System.out.println(count);
// 执行到这里,没有发生任何异常,提交事务。终止事务。
sqlSession.commit();
} catch (Exception e) {
// 最好回滚事务
if (sqlSession != null) {
sqlSession.rollback();
}
e.printStackTrace();
} finally {
// 关闭会话(释放资源)
if (sqlSession != null) {
sqlSession.close();
}
}
}
我们可以在获取SqlSession前面的步骤进行封装,使代码更加简洁
SqlSessionUtil工具类
public class SqlSessionUtil{
private SqlSessionUtil() {//构造方法私有化
}
public static SqlSessionFactory sqlSessionFactory;
//类加载的时候执行
static {
try {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取SqlSession会话
* @return SqlSession对象
*/
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
这样编写以上代码就会变成这样,代码少了而且更加具有可读性
@Test
public void testInsertCarbyUtil(){
//使用工具类编写
SqlSession session = SqlSessionUtil.getSession();
int count = session.insert("insertCar");
System.out.println(count);
session.commit();
session.close();
}