MyBatis核心组件之SqlSessionFactory

MyBatis核心组件之SqlSessionFactoryMyBatis的核心组件MyBatis的核心组件分为4个部分:SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式。SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。SqlSession(会话):一个既可以发送SQL执行返回结果,也可…

大家好,又见面了,我是你们的朋友全栈君。

MyBatis的核心组件

MyBatis的核心组件分为4个部分:

  • SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式。
  • SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。
  • SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。在现有的技术中,一般我们会让其在业务逻辑代码中“消失”,而使用的是MyBatis提供的SQL Mapper接口编程技术,它能提高代码的可读性和可维护性。
  • SQL Mapper(映射器):MyBatis新设计存在的组件,它由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。
    MyBatis核心组件之SqlSessionFactory

SqlSessionFactory

使用MyBatis首先是使用配置或者代码去生产SqlSessionFactory,而MyBatis提供了构造器SqlSessionFactoryBuilder。它提供了一个类org.apache.ibatis.session.Configuration作为引导,采用的是Builder模式。

在MyBatis中,既可以通过读取配置的XML文件的形式生成SqlSessionFactory,也可以通过Java代码的形式去生成SqlSessionFactory。每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为中心的,而SqlSessionFactory唯一的作用就是生产MyBatis的核心接口对象SqlSession,所以它的责任是唯一的,我们往往可以通过单例模式处理它。下面为两种方式创建SqlSessionFactory的代码。

使用XML构建SqlSessionFactory
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 设置别名 -->
	<typeAliases>
		<package name="com.etc.ssm.entity"/>
	</typeAliases>
	<!-- 加载数据库属性文件 -->
    <properties resource="db.properties"></properties>
    <environments default="development">
        <environment id="development">
            <!--使用JDBC实务管理-->
            <transactionManager type="JDBC"></transactionManager>
            <!--连接池  POOLED为连接池方式 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"></property>
                <property name="url" value="${jdbc.url}"></property>
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>
    <!--  引入映射文件 -->
    <mappers>
		<mapper resource="com.etc.ssm.mapper.UserMapper.xml"/>
	</mappers>
</configuration>

typeAliase节点:定义一个别名,代表com.etc.ssm.entity包下所有的类在MyBatis上下文中可以使用别名去代替全限定名。
properties节点:可以引入指定目录下的配置文件。
environments节点:描述的是数据库,其中transactionManager节点是配置事务管理器,采用MyBatis中JDBC的管理器方式,采用dataSource节点配置数据库,POOLED表示采用MyBatis内部提供的连接池方式。
mappers节点:引入映射器。

@Test
public void testXmlSqlSessionFactory() {
	SqlSessionFactory sqlSessionFactory = null;
	String resource = "sqlMapConfig.xml";
	InputStream inputStream;
	try {
		inputStream = Resource.getResourceAsStream(resource);
	} catch (Exception e) {
		e.printStackTrace();
	}
}
使用代码创建SqlSessionFactory

这种方法创建SqlSessionFactory不推荐使用。

//数据库连接池信息
PooledDataSource dataSource=new PooledDataSource();
dataSource.setDriver("com.mysql.jdbc.Driver");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setUrl("jdbc:mysql://localhost:3306/ssm");
dataSource.setDefaultAutoCommit(false);
//采用MyBatis的JDBC事务方式
TransactionFactory transactionFactory =new JdbcTransactionFactory();
Environment environment=new Environment("development",transactionFactory,
dataSource);
/创建 Configuration对象
Configuration configuration=new Configuration(environment);
//注册一个MyBatis上下文别名
configuration.getTypeAliasRegistry().registerAlias("user",User.class);
//加入一个映射器
configuration.addMapper(UserMapper.class);
//使用 SqlSessionFactoryBuilder 构建SqlSessionFactory
SqlSessionFactory SqlSessionFactory=
new SqlSessionFactoryBuilder().,build(configuration);
return SqlSessionFactory;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142790.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Redis 数据类型

    1.String(字符串)string是redis最基本的类型,一个key对应一个valuestring类型是二进制安全的,即它可以包含任何数据setkeyvalue创建一个键值对getkey得到key对应的值示例:redis127.0.0.1:6379&gt;setnamezhangsanOKredis127….

    2022年4月9日
    37
  • C#语言各种集合介绍

    集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问)一个集合包括多个元素,即有一个集合类对象和N个元素对象因为任何集合类都实现了IEnumerable接口,所以任何集合

    2021年12月20日
    39
  • 一分钟教会你固态硬盘数据恢复方法

    不少人都知道,固态硬盘上丢失了数据是很难恢复的,但是也有一些数据丢失的情况,是可以尝试恢复数据的,比如说误删除分区、分区变为RAW状态。针对这些情况,今天呢,小编给大家分享一下固态硬盘数据恢复方法,我们需要借助一款好用的数据恢复软件——易我数据恢复,该软件可深度扫描磁盘数据,根据删除标记、文件目录信息和文件内容等三种方式分别检索文件,搜寻更全面。(详情访问:https://www.easeus.com.cn/data-recovery-software/data-recovery-wizard.html

    2022年4月5日
    306
  • Win10这样设置,电脑瞬间提速5倍,多用几年无压力

    Win10这样设置,电脑瞬间提速5倍,多用几年无压力相信大家都有这样的经历,新买的电脑用了大半年,就开始有点卡顿不丝滑了。其实卡顿的原因除了硬件,以及不常清理垃圾,导致垃圾堆积外,电脑系统上的一些应用的无用服务,也是会影响系统的运行流畅度的。一般系统里的大多数服务是默认开启的,很多是用不上的,今天小编就教大家怎么关闭这些服务。一、Cortana功能Cortana是win10系统的语音小助手,其实大部分的语音助手在平时用处都有不大的,建议关闭。关闭方法:1.在键盘上按下【win+R】组合键,调出运行窗口,输入【gpedit.msc】

    2022年6月9日
    40
  • Node脚手架编写初学者教程

    Node脚手架编写初学者教程

    2022年3月4日
    29
  • win10专业工作站版命令提示符激活【中文破解版】2022.01.24

    (win10专业工作站版命令提示符激活)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    91

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号