MyBatis基础

MyBatis基础

工作原理

  1. 读取MyBatis配置文件:mybatis-config.xml为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,例如数据库连接信息。
  2. 加载映射文件:映射文件即SQL映射文件,该文件中配置了操作系统数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml文件可以加载做个映射文件,每个文件对应数据库的一张表。
  3. 构建会话工厂:通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。
  4. 创建会话对象:由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。
  5. Executor执行器:MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。
  6. MappedStatement对象:在Executor接口的执行方法中有一个MapperdStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。
  7. 输入参数映射:输入参数类型可以是Map、List等集合类型,也可以是基本数据类型的POJO类型。输入参数映射过程类似于JDBC对preparedStatment对象设置参数的过程。
  8. 输出结果映射:输出结果类型可以是Map、List等集合类型,也可以是基本类型和POJO类型。输出结果映射过程类似于JDBC对结果集的解析过程。

MyBatis的配置文件代码演示如下:

<?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>
	<environments default="development">
		<environment id="development">
			<!-- 使用JDBC的事务管理 -->
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<!-- MySQL数据库驱动 -->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 连接数据库的URL -->
				<property name="url"
					value="jdbc:mysql://localhost:3306/learn?characterEncoding=utf8" />
				<property name="username" value="root" />
				<property name="password" value="" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<!-- 映射文件的位置 -->
		<mapper resource="mapper/ListMapper.xml" />
	</mappers>
</configuration>

映射配置文件代码演示如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.UserMapper">
	<insert id="insertUser" parameterType="po.MyUser">
		insert into user (uid,uname,usex) values(#{uid},#{uname},#{usex})
	</insert>
	<delete id="deleteUserById" parameterType="int">
		delete from user where uid = #{uid}
	</delete>
	<update id="updateUserById" parameterType="po.MyUser">
		update user set uname = #{uname},usex = #{usex} where uid = #{uid}
	</update>
	<select id="selectAllUser" resultType="po.MyUser">
		select * from user
	</select>
</mapper>

MyBatis与Spring的整合

在Spring中配置MyBatis工厂

​ 通过Spring的整合,SessionFactory将交由Spring来创建,在构建时需要将Spring配置文件中添加如下代码:

<!-- 配置数据源 -->
	<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
			<property name="driverClassName" value="com.mysql.jdbc.Driver" />
			<property name="url" value="jdbc:mysql://localhost:3307/learn?characterEncoding=utf8" />
			<property name="username" value="root" />
			<property name="password" value="root" />
			<!-- 最大连接数 -->
			<property name="maxTotal" value="30"/>
			<!-- 最大空闲连接数 -->
			<property name="maxIdle" value="10"/>
			<!-- 初始化连接数 -->
			<property name="initialSize" value="5"/>
	</bean>
	<!-- 添加事务支持 -->
	<bean id="txManager"   
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
        <property name="dataSource" ref="dataSource" />   
    </bean> 
    <!-- 开启事务注解-->
	<tx:annotation-driven transaction-manager="txManager" />
 	<!-- 配置MyBatis工厂,同时指定数据源,并与MyBatis完美整合 -->  
 	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource" />  
        <!-- configLocation的属性值为MyBatis的核心配置文件 -->
        <property name="configLocation" value="classpath:mybatis/mybatis_config.xml"/>
    </bean>  
	<!--Mapper代理开发,使用Spring自动扫描MyBatis的接口并装配
 	(Spring将指定包中所有被@Mapper注解标注的接口自动装配为MyBatis的映射接口)  --> 
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     	<!-- mybatis-spring组件的扫描器 -->
     	<property name="basePackage" value="dao"/>
     	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
     </bean>

参考教材《JavaEE框架整合开发入门到实战》侵删。
本人现役大三小白一枚,如有不足之处还望指正。

posted @ 2020-03-12 18:45  Aaron`Joe  阅读(72)  评论(0)    收藏  举报