当前位置: 首页 > news >正文

丰都网站建设案例百度站长工具

丰都网站建设案例,百度站长工具,网站建设中...,海西州网站建设公司SqlSessionFactory作为MyBatis框架的核心接口有三大特性 SqlSessionFactory是MyBatis的核心对象 用于初始化MyBatis,创建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配置内容为:

0bc27116664742d2aca0aa70a57c57ab.png

2.用于初始化MyBatis,创建SqlSession对象

我们在IDEA中用代码演示如何创建SqlSession对象,首先我们要打开pom.xml文件,为了测试的方便引入单元测试组件junit,junit是Java中单元测试框架通过单元测试可以了解我们程序的运行情况

 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>

在引用以后,我们打开test下java这个目录,新建包名为com.test.mybatis,test这个包保存的就是我们一个个的单元测试类

8d758f1e5e7741f889d47e4efd79759d.png

在这个包下,再创建一个名为MyBatisTestor单元测试类

04213a5c6ccf40d68d0aa2b6c49cdad2.png

该类的代码内容创建如下: 

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){//如果type="POOLED",代表使用连接池,close则是将连接回收到连接池中//如果type="UNPOOLED",代表直连,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);

运行得到结果

f7e079c1c18b4f75b59cf4c31002c1e5.png

数据库连接已经能够正常创建,说明我们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){//如果type="POOLED",代表使用连接池,close则是将连接回收到连接池中//如果type="UNPOOLED",代表直连,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 sqlSessionFactory=null;

添加静态块 并用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);}

运行结果显示:

说明得到了一个有效的数据库连接

http://www.zhongyajixie.com/news/33106.html

相关文章:

  • 行业网站的特点营销排名seo
  • 收藏的网站从做系统后找不到了网络营销研究背景及意义
  • 厦门双瑞高磁网站是谁做的天津百度推广网络科技公司
  • 网站维护主要从哪几个方面做今日新闻网
  • 做网页局域网站点配置温州seo网站推广
  • 上海传媒公司总裁李闪闪安卓优化大师官方版
  • 台州建设银行官方网站app营销策略
  • 怎样做网站后台运营站长数据
  • 网站建设电脑端手机端怎样有效的做网上宣传
  • 一站式做网站哪家好怎样下载优化大师
  • 哈尔滨自媒体公司济南seo网站优化公司
  • wordpress+整站下载扬中网站制作
  • 计算机专业做网站的开题报告百度首页推荐关不掉吗
  • 远丰做网站怎么样免费crm
  • 做详情页上什么网站找素材保定百度首页优化
  • 潍坊网站建设电话中国国家培训网官网入口
  • 广州培训+网站开发青岛网站seo公司
  • 济南网站建设开发投放广告找什么平台
  • 网站百度搜索情况和反链接优化建议平台运营推广
  • 福州市交通建设集团网站apple日本网站
  • 网站建设基本流程详细说明百度权重5的网站能卖多少钱
  • 注册完域名怎么做网站网站优化建设
  • 贵阳网站建设-中国互联成都网站制作关键词推广排名
  • 六安网站建设招聘seo优化快速排名技术
  • 做网站友情链接都写什么搜索网站的软件
  • 市场推广的方法和规划厦门seo小谢
  • 网站怎么做关键词排名如何解决网站只收录首页的一些办法
  • 做网站点击率怎么收钱手机百度旧版本下载
  • 网站开发目前主要用什么技术留电话的广告网站
  • 池州网站建设怎么样搜索引擎营销的常见方式