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.Reader;
import java.util.function.Function;
public class MybatisUtils {
//利用static属于类,不属于对象,且全局唯一
private static SqlSessionFactory sqlSessionFactory=null;
//利用静态块在初始化类时实例化sqlSessionFactory
static {
Reader reader=null;
try{
reader= Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory =new SqlSessionFactoryBuilder().build(reader);
}catch (IOException e){
throw new ExceptionInInitializerError(e);
}
}
/**
* 执行select查询sql
* @param func 要执行查询语句的代码块
* @return 查询结果
*/
public static Object executeQuery(Function<SqlSession,Object> func){
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
Object obj = func.apply(sqlSession);
return obj;
}finally {
sqlSession.close();
}
}
/**
* 执行insert/update/delete写操作
* @param func 要执行的操作代码块
* @return 写操作结果
*/
public static Object executeUpdate(Function<SqlSession,Object> func){
SqlSession sqlSession = sqlSessionFactory.openSession(false);
try {
Object obj = func.apply(sqlSession);
sqlSession.commit();
return obj;
}catch (RuntimeException e){
sqlSession.rollback();
throw e;
}finally {
sqlSession.close();
}
}
}
基于java8函数式接口Function实现MyBatisUtils
最新推荐文章于 2024-02-01 16:24:51 发布
该博客介绍了如何创建一个MyBatis的工具类,用于简化SqlSession的管理和SQL操作。通过静态变量和静态块初始化SqlSessionFactory,提供executeQuery和executeUpdate方法分别处理查询和更新操作,确保资源的正确关闭并处理异常。
摘要由CSDN通过智能技术生成