200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > MyBatis复习(三):MyBatis核心对象SqlSessionFactory和SqlSession

MyBatis复习(三):MyBatis核心对象SqlSessionFactory和SqlSession

时间:2021-01-30 05:31:37

相关推荐

MyBatis复习(三):MyBatis核心对象SqlSessionFactory和SqlSession

MyBatis有两个核心对象:SqlSessionFactory、SqlSession

🍒 SqlSessionFactory是MyBatis的核心对象,主要用于加载配置文件,初始化MyBatis,并创建SqlSession的作用。所以需要保证SqlSessionFactory在应用中全局唯一

🍒 SqlSession是MyBatis操作数据库的核心对象。SqlSession是在原始JDBC的基础上进行扩展,简化了与数据库的交互工作。并且SqlSession对象提供了数据表的CRUD对应的API方法。

🍒 SqlSession可以形象的看作是一个扩展过的JDBC的Connection扩展对象,它在原有的Connection对象的基础上封装了大量额外的实用方法

🍓 MyBatisUtils工具类

package com.cd.blog.config;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;/*** @Author: 落叶无痕* @Date: /5/15 16:45*/public class MyBatisUtils {/*MyBatisUtils工具类,目的是创建全局唯一的SqlSessionFactory对象*///static属于类不属于对象,且全局唯一private static SqlSessionFactory sqlSessionFactory = null;//利用静态块在初始化类时初始化SqlSessionFactorystatic {InputStream input = null;try {// 使用字节流方式加载classpath下的mybatis-config.xml核心配置文件input = Resources.getResourceAsStream("mybatis-config.xml");// 初始化SqlSessionFactory对象,并解析mybatis-config.xml文件sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);} catch (IOException e) {e.printStackTrace();//初始化错误时,抛出ExceptionInInitializerError异常通知调用者throw new ExceptionInInitializerError(e);}}// 创建SqlSession对象(SqlSession是JDBC的扩展类,专门用于与数据库交互)public static SqlSession openSession(){//sqlSession默认会自动commit提交事务,设置为false代表关闭自动提交,改为手动提交return sqlSessionFactory.openSession(false);}// 释放一个有效的SqlSession对象public static void closeSession(SqlSession sqlSession){if(sqlSession != null){sqlSession.close();}}}

🍓 测试

package com.cd.blog.config;import org.apache.ibatis.session.SqlSession;import org.junit.Test;/*** @Author: 落叶无痕* @Date: /5/15 17:14*/public class TestMyBatisUtils {@Testpublic void demo(){SqlSession sqlSession = null;try{sqlSession = MyBatisUtils.openSession();Teacher teacher=new Teacher();// 增teacher.setName("wang");sqlSession.insert("add",teacher);// 改teacher.setId(3);teacher.setName("chen");sqlSession.insert("update",teacher);// 删teacher.setId(3);sqlSession.insert("delete",teacher);//查System.out.println("查");getAll(sqlSession);mit(); // 提交事务}catch (Exception e){throw e;}finally {MyBatisUtils.closeSession(sqlSession);}}private static void getAll(SqlSession sqlSession){List<Teacher> ts=sqlSession.selectList("getAll");for (Teacher t:ts){System.out.print(t.getId()+" , ");System.out.println(t.getName());}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。