Spring MyBatis的核心配置

Spring MyBatis的介绍和一个基础案例可以参考

Spring MyBatis_m0_51457307的博客-优快云博客什么是MyBatisMyBatis是当前主流的java持久层框架(对象持久化:是指将对象存储在可持久保存的存储介质上,例如主流的关系数据库中。)之一,与Hibernate一样,都是一种ORM框架(ORM:Object/Relational Mapping,即对象关系映射)。MyBatis(前身是iBatis)是一个支持普通SQL查询,存储过程和高级映射的持久层框架。MyBatis优点:性能优异,具有高度的灵活性,可优化性和易维护等特点。什么是ORM框架ORM是一种为了解决面向对象与关系型https://blog.youkuaiyun.com/m0_51457307/article/details/121595747接下来开始介绍MyBatis的核心配置。

SqlSessionFactory和SqlSession

在使用MyBatis框架时,主要涉及两个核心对象:SqlSessionFactory和SqlSession。

SqlSessionFactory

SqlSessionFactory在MyBatis中的主要作用是创建SqlSession。而SqlSessionFactory对象的实例是通过SqlSessionFactoryBuilder对象来构建,SqlSessionFactoryBuilder则可以通过XML文件或者一个预先定义好的Configuration实例构建出SqlSessionFactory的实例。

通过XML文件构建SqlSessionFactory的代码如下:

//读取配置文件
InputStream inputStream  = Resources.getResourceAsStream("配置文件位置");
//根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

SqlSessionFactory对象是线程安全的,一旦被创建,在整个应用执行期间都会存在,如果我们多次的创建同一个数据库的SqlSessionFactory,那么数据库的资源将很快被耗尽,为了解决此问题,通常每一个数据库都只对应一个SqlSessionFactory。

SqlSession

SqlSession是应用层与持久层之间执行交互操作的一个单线程对象,作用是执行持久化操作。它包含了数据库中所有执行sql操作的方法,因为它底层封装了jdbc,所以可以直接用SqlSession实例来执行已经映射的sql语句。

每一个线程都应该有一个自己的SqlSession实例,并且实例是不能被共享的。

SqlSession是线程不安全的,他的使用范围最好在一次请求或者一个方法中,使用完之后应将及时关闭,通常放在finally块中关闭。代码如下:

SqlSession sqlSession = SqlSessionFactory.openSession();
try{
    //从此执行持久化操作
}finally{
    sqlSession.close();
}

SqlSession对象中包含的常用方法:

【mybatis-SqlSession的方法总结】 - ProSayJ - 博客园 (cnblogs.com)

MyBatis配置文件中主要元素

 <properties>是一个配置属性的元素,通常用于将内部的配置外在化,意思就是通过外部的配置来动态的替换内部定义的属性。

一般用于数据库连接,在相同路径下创建一个db.properties的配置文件,编辑数据库的相关信息

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/mybatis
jdbc.username = root
jdbc.password = 123456

然后在MyBatis配置文件中就可以通过该标签配置获得数据库的属性

<properties resource="db.properties"></properties>
<dataSource type="POOLED">
 	<property name="driver" value="${jdbc.driver}"/>
 	<property name="url" value="${jdbc.url}"/>
 	<property name="username" value="${jdbc.username}"/>
 	<property name="password" value="${jdbc.password}"/>
</dataSource>

<settings>元素用于改变MyBatis运行时的行为,例如开启二级缓存、开启延迟加载等。

<typeHandler>元素作用是将预处理语句中传入的参数从javaType(java类型)转换为jdbcType(jdbc类型),或者反之。

<environments>元素用于对环境进行配置。MyBatis环境配置实际上就是数据源的配置,可以通过该元素配置多种数据源,即配置多种数据库。

<!-- 配置环境,默认的环境id为mysql -->
 	<environments default="mysql">
 		<!-- 配置id为mysql的数据库环境 -->
 		<environment id="mysql">
 			<transactionManager type="JDBC"></transactionManager>
 			<dataSource type="POOLED">
 				<property name="driver" value="${jdbc.driver}"/>
 				<property name="url" value="${jdbc.url}"/>
 				<property name="username" value="${jdbc.username}"/>
 				<property name="password" value="${jdbc.password}"/>
 			</dataSource>
 		</environment>
 	</environments>

其中dataSource的type属性用于指定哪一种数据源,myBatis框架提供了UNPOOLED、POOLED、JNDI三种数据源类型。

三种数据源的区别:

Mybatis中的三类数据源 UNPOOLED、POOLED 和 JNDI 的区别 - 寻梦君 - 博客园

<mappers>元素,用于指定MyBatis映射文件的位置,一般有四种方法引入映射器文件

1、使用类路径引入

<mappers>
 		<mapper resource="类的全路径"/>
</mappers>

2、使用本地文件路径引入

<mappers>
 		<mapper url="file:///本地文件的全路径" />
</mappers>

3、使用接口类引入

<mappers>
 		<mapper calss="接口类的类路径" />
</mappers>

4、使用包名引入

<mappers>
         <package name="包名"/>
</mappers>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值