宠物论坛网站策划书深圳龙岗区网站建设
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:32
当前位置: 首页 > news >正文
宠物论坛网站策划书,深圳龙岗区网站建设,优化设计英语,做盗版视频网站成本多少SqlSessionFactory作为MyBatis框架的核心接口有三大特性 SqlSessionFactory是MyBatis的核心对象 用于初始化MyBatis#xff0c;创建SqlSession对象 保证SqlSessionFactory在应用中全局唯一 1.SqlSessionFactory是MyBatis的核心对象 假设我们要查询数据库的用户信息#x…SqlSessionFactory作为MyBatis框架的核心接口有三大特性 SqlSessionFactory是MyBatis的核心对象 用于初始化MyBatis创建SqlSession对象 保证SqlSessionFactory在应用中全局唯一 1.SqlSessionFactory是MyBatis的核心对象 假设我们要查询数据库的用户信息在MyBatis框架中首先需要通过SqlSessionFactory创建SqlSession然后才能使用SqlSession获取对应的Mapper接口进而执行查询操作 在前一章我们学习了如何创建MyBatis的配置文件mybatis.config.xml本章我们要学习创建SqlSessionFactory读取mybatis.config.xml配置信息数据库驱动连接URL用户名和密码来建立与数据库的连接基础。它是创建SqlSession对象的工厂而SqlSession对象是与数据库进行实际交互的关键是用于执行SQL语句管理事务以及获取映射器Mapper的核心接口 如果没有SqlSessionFactory就无法获取SqlSession也就不能执行诸如查询插入更新和删除等数据库操作 前一章MyBatis的配置文件mybatis-config.xml配置内容为 2.用于初始化MyBatis创建SqlSession对象 我们在IDEA中用代码演示如何创建SqlSession对象首先我们要打开pom.xml文件为了测试的方便引入单元测试组件junitjunit是Java中单元测试框架通过单元测试可以了解我们程序的运行情况 dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.12/version/dependency 在引用以后我们打开test下java这个目录新建包名为com.test.mybatis,test这个包保存的就是我们一个个的单元测试类 在这个包下再创建一个名为MyBatisTestor单元测试类 该类的代码内容创建如下 package com.test.mybatis;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 org.junit.Test;import java.io.IOException; import java.sql.Connection;//JUNIT单元测试类 public class MybatisTestor {Testpublic void testSqlSessionFactory() throws IOException {//利用Reader加载classpath下的mybatis—config.xml核心配置文件Reader reader Resources.getResourceAsReader(mybatis-config.xml);//初始化SqlSessionFactory对象同时解析mybatis—config.xml文件SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(reader);System.out.println(SessionFactory加载成功);SqlSession sqlSession null;try{//创建SqlSession对象SqlSession是JDBC的扩展类用于与数据库交互sqlSession sqlSessionFactory.openSession();//创建数据库连接测试用Connection connection sqlSession.getConnection();System.out.println(connection);}catch(Exception e){e.printStackTrace();}finally{//如果sqlSession不等于null则代表创建成功if(sqlSession !null){//如果typePOOLED,代表使用连接池close则是将连接回收到连接池中//如果typeUNPOOLED,代表直连close则会调用Connection.close()方法关 闭连接sqlSession.close();} } }代码语句功能实现解析 Reader reader Resources.getResourceAsReader(mybatis-config.xml);这行语句主要实现以字符流的方式进行读取读取mybatis-config.xml文件的代码 SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(reader);而这段语句则是利用构造者模式SqlSessionFactoryBuilder初始化SqlSessionFactory对象通过构造者模式的.build方法将reader对象传入它就会通过reader对象解析和读取MyBatis的核心配置文件mybatis-config.xml并且返回对应的sqlSessionFactory对象 然后需要我们利用sqlSessionFactory.openSession根据mybatis-config.xml描述的配置信息得到SqlSession对象用于与数据库交互SqlSession对象我们把它形象的看作是一个底层的数据库连接在Mybatis中利用SqlSession对数据表进行增删改查操作 //openSession方法是SqlSessionFactory提供的用于创建SqlSession方法 SqlSession sqlSession sqlSessionFactory.openSession();当我们进行数据库操作的时候我们可以利用SqlSession提供的一系列方法来完成交互 引用.getConnection来得到数据库连接对象之后将connection对象打印出来演示创建数据库连接的过程在正常开发时是由Mybatis自动帮我们完成的我们并不需要用到这行代码这里为了方便大家理解只做演示使用 Connection connection sqlSession.getConnection(); System.out.println(connection); 运行得到结果 数据库连接已经能够正常创建说明我们mybatis.config.xml所描述的信息是正确的 对于数据库来说有创建连接数据库就要有关闭数据库的操作目前我们实现了数据库连接那么如何对数据库进行关闭呢我们对下面这组代码进行try-catch异常检查并实现关闭数据库操作代码 SqlSession sqlSession null; try{//创建SqlSession对象SqlSession是JDBC的扩展类用于与数据库交互sqlSession sqlSessionFactory.openSession();//创建数据库连接测试用Connection connection sqlSession.getConnection();System.out.println(connection);}catch(Exception e){e.printStackTrace();}finally{//如果sqlSession不等于null则代表创建成功if(sqlSession !null){//如果typePOOLED,代表使用连接池close则是将连接回收到连接池中//如果typeUNPOOLED,代表直连close则会调用Connection.close()方法关闭连接sqlSession.close();} } 3.保证SqlSessionFactory在应用中全局唯一 为什么要保证SqlSessionFactory在应用中全局唯一呢 资源消耗SqlSessionFactory 在创建过程中需要读取和解析 MyBatis 的配置文件mybatis - config.xml配置文件包含了数据库连接信息、缓存配置、映射文件位置等内容。解析这些配置文件相对复杂和消耗资源如果频繁地创建 SqlSessionFactory 实例就会多次重复这个解析过程这会导致不必要的性能开销。 如何保证SqlSessionFactory全局唯一 ——这里需要依赖Java中的一些开发技巧和特性利用MyBatisUtils工具类 MyBatisUtils 是一个自定义的工具类主要用于简化在 MyBatis 框架下与数据库交互过程中的一些常见操作。它的核心目的是提供方便的方法来获取和管理 MyBatis 中的关键对象如 SqlSessionFactory 和 SqlSession从而让开发人员能更高效地进行数据库访问操作。 我们通过程序代码的方式来演示如何创建初始化工具类MyBatisUtils 在上述编写MyBatisTestor代码中我们初始化了SqlSessionFactory对象 在我们平时开发中如果按照上述创建方法每一次创建SqlSession都要重复编写这段代码就造成了一系列不必要的资源浪费为了保证全局唯一我们就需要创建MyBatisUtils工具类下面我们用代码来实现如何创建 新建类 名为MyBatisUtils 类的内容如下 //将SqlSessionFactory全局对象初始化为null private static SqlSessionFactory sqlSessionFactorynull添加静态块 并用try-catch对其捕捉 static{Reader reader null;try{Reader reader Resources.getResourceAsReader(mybatis-coonfig.xml);sqlSessionFactory new SqlSessionFactoryBuilder().build(reader);}catch(IOException e)e.printStrackTrace();//用try—catch包裹后将类的初始化过程中产生的异常抛出去throw new ExceptionInInitializerError(e);} } /*openSession 创建一个新的SqlSession对象return SqlSession对象/public static SqlSession openSession(){return sqlSessionFactory.openSession(); } /*关闭一个有效的SqlSession对象param session 准备关闭SqlSession对象/public static void closeSession(SqlSession session){if(Session null){session.close();} } 1.Reader reader Resources.getResourceAsReader(mybatis-coonfig.xml); 使用MyBatis框架提供的Resources类的getResourceAsReader方法根据指定的文件名从类路径下找到对应的文件并将其转换为一个Reader对象方便后续能够以字符流的形式读取配置文件的内容 2.sqlSessionFactory new SqlSessionFactoryBuilder().build(reader); 利用build对象构建sqlSessionFactory对象build需要传入read字符类的输入流 再增加一段方法演示MyBatisUtils工具类如何实现 public void testMyBatisUtils(){//调用MyBatisUtils得到SqlSession对象SqlSession sqlSession MyBatisUtils.openSession();//调用getConnection得到对应的数据库连接Connection connection sqlSession.getConnection();//将其打印出来System.out.println(connection);//调用closeSession对sqlSession对象进行释放MyBatisUtils.closeSession(sqlSession);} 运行结果显示 说明得到了一个有效的数据库连接
- 上一篇: 宠物店网站建设策划书上海设计公司排名榜
- 下一篇: 宠物网站 模板字节跳动广告代理商加盟
相关文章
-
宠物店网站建设策划书上海设计公司排名榜
宠物店网站建设策划书上海设计公司排名榜
- 技术栈
- 2026年03月21日
-
崇左北京网站建设网站单页制作
崇左北京网站建设网站单页制作
- 技术栈
- 2026年03月21日
-
崇左北京网站建设HTML5移动端手机网站开发
崇左北京网站建设HTML5移动端手机网站开发
- 技术栈
- 2026年03月21日
-
宠物网站 模板字节跳动广告代理商加盟
宠物网站 模板字节跳动广告代理商加盟
- 技术栈
- 2026年03月21日
-
宠物网站建设目标百度账号申请注册
宠物网站建设目标百度账号申请注册
- 技术栈
- 2026年03月21日
-
宠物网站设计模板wordpress showposts
宠物网站设计模板wordpress showposts
- 技术栈
- 2026年03月21日






