MyBatis框架----核心配置

一、核心对象

1.1 SqlSessionFactory

SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession.
通过XML配置文件构建出SqlSessionFactory实例:

	// 1、读取配置文件
		String resource = "mybatis-config.xml";
		InputStream inputStream = 
                     Resources.getResourceAsStream(resource);
		// 2、根据配置文件构建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = 
                     new SqlSessionFactoryBuilder().build(inputStream);

SqlSessionFactory对象是线程安全的,一旦被创建在整个应用执行期间都会存在。
通常每个数据库都会只对应一个SqlSessionFactory,所有在构建SqlSessionFactory实例时,建议使用单例模式

1.2 SqlSession

SqlSession是应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作。
每一个线程都有自己的SqlSession实例,并且该实例时不能被共享的。
同时SqlSession实例也是线程不安全的,因此其使用范围最好在一次请求或一个方法中,绝不能将其放入一个类的静态字段、实例字段或任何类型的管理范围中使用。使用完SqlSession对象后要及时关闭。
SqlSession中的方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用工具类来创建SqlSession
在这里插入图片描述

二、mybatis-config.xml配置文件

在这里插入图片描述

2.1 properties

一个配置属性的元素,该元素通常用来将内部的配置外在化。

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

<configuration>
	<properties resource="db.properties" />
	<!--1.配置环境 ,默认的环境id为mysql -->
	<environments default="mysql">
		<!--1.2.配置id为mysql的数据库环境 -->
		<environment id="mysql">
			<!-- 使用JDBC的事务管理 -->
			<transactionManager type="JDBC" />
			<!--数据库连接池 -->
			<dataSource type="POOLED">
				<!-- 数据库驱动 -->
				<property name="driver" value="${jdbc.driver}" />
				<!-- 连接数据库的url -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC" />
				<!-- 连接数据库的用户名 -->
				<property name="username" value="${jdbc.username}" />
				<!-- 连接数据库的密码 -->
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>
	<!--2.配置Mapper的位置 -->
	<mappers>
		<mapper resource="com/itheima/mapper/CustomerMapper.xml" />
	</mappers>
</configuration>

2.2 typeAliases元素

用于为配置文件中Java类型设置一个简短的名字,别名的设置与mapper.XML配置相关,其目的是为了减少全限定类名的冗余。

在这里插入图片描述
常见Java类型对应的类型别名
在这里插入图片描述

2.3 typeHandler元素

typeHandler的作用是将预处理语句中传入的参数从javaType(java类型)转换为jdbcType(JDBC类型),或者从数据库取出结果时将jdbcType转换为javaType.
在这里插入图片描述

2.4 objectFactory 元素

在这里插入图片描述在这里插入图片描述

2.5 plugins 元素

MyBatis容许在已映射语句执行过程中的某一点进行拦截调用,这种拦截调用是通过插件来实现的。元素的作用就是配置用户所开发的插件。

2.6 environments 元素

可以通过元素配置多种数据源,即配置多种数据库。

<environments default="mysql">
		<!--1.2.配置id为mysql的数据库环境 -->
		<environment id="mysql">
			<!-- 使用JDBC的事务管理 -->
			<transactionManager type="JDBC" />
			<!--数据库连接池 -->
			<dataSource type="POOLED">
				<!-- 数据库驱动 -->
				<property name="driver" value="${jdbc.driver}" />
				<!-- 连接数据库的url -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC" />
				<!-- 连接数据库的用户名 -->
				<property name="username" value="${jdbc.username}" />
				<!-- 连接数据库的密码 -->
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
	</environments>

2.6.1 事物管理器的配置

在这里插入图片描述

2.6.2数据源的配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7 mappers 元素

用于指定MyBatis映射文件的位置,一般有四种方法引入映射器文件。
在这里插入图片描述
在这里插入图片描述

三、映射文件

在映射文件中,《mapper》元素是映射文件的根元素,其他元素都是它的子元素。
在这里插入图片描述

3.1 select 元素的常用属性

在这里插入图片描述
select实例

<!--1.根据客户编号获取客户信息 -->
	<select id="findCustomerById" parameterType="Integer"
		resultType="com.it.po.Customer"> 
		
		select * from t_customer where id = #{id}
	</select> 
	<!--根据客户名模糊查询客户信息列表-->
	<select id="findCustomerByName" parameterType="String"
	    resultType="com.it.po.Customer">
	    <!-- select * from t_customer where username like '%${value}%' -->
	    select * from t_customer where username like concat('%',#{value},'%')
	</select>在这里插入代码片

3.2 insert实例

<!-- 添加客户信息 -->
	<insert id="addCustomer" parameterType="com.it.po.Customer">
	    insert into t_customer(username,jobs,phone)
	    values(#{username},#{jobs},#{phone})
	</insert>

insert元素和select元素的属性大部分相同,但有三个特有属性。

在这里插入图片描述
执行插入操作后,很多时候需要返回插入成功的数据生成的主键值,这时就用到了那三个特殊的属性来实现。
在这里插入图片描述

3.3 update和delete元素的使用实例

	<!-- 更新客户信息 -->
	<update id="updateCustomer" parameterType="com.it.po.Customer">
	    update t_customer set
	    username=#{username},jobs=#{jobs},phone=#{phone}
	    where id=#{id}
	</update>
	
	<!-- 删除客户信息 -->
	<delete id="deleteCustomer" parameterType="Integer">
	    delete from t_customer where id=#{id}
	</delete>

3.4 sql元素

定义可重用的SQL代码片段,然后在其他语句中引用这一片段。
在这里插入图片描述

3.5 resultMap元素

它的主要作用是定义映射规则、级联的更新以及定义类型转换器等。
在默认情况下,MyBatis程序在运行时会自动地将查询到的数据与需要返回的对象的属性进行匹配赋值(需要表中的列名与对象的属性名称完全一致),然而在实际开发中表中的列名和对象的属性可能不完全一致。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值