在 MyBatis 中,你可以使用 SqlSessionFactory 来创建 SqlSession。 一旦你获得一个 session 之后,你可以使用它来执行映射了的语句,提交或回滚连接,最后,当不再需要它的时候,你可以关闭 session。 使用 MyBatis-Spring 之后,你不再需要直接使用 SqlSessionFactory 了,因为你的 bean 可以被注入一个线程安全的 SqlSession,它能基于 Spring 的事务配置来自动提交、回滚、关闭 session。
这是官方文档上的描述,翻译过来的人话就是:在MyBatis-Spring中,使用下面即将登场的SqlSessionTemplate来创建SqlSession
目录
目录
1、使用SqlSessionTemplate
1.1 导包
本教程所需要的所有依赖包如下
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.8</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.8</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
</dependencies>
1.2 创建User类
定义了三个属性,id、name、pwd,且均为私有属性,并利用Lombok生成set、get方法和toString方法。
package com.jason.pojo;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class User {
private long id;
private String name;
private String pwd;
}
1.3 创建UserMapper接口
定义一个查询所有用户的方法queryUsers()
package com.jason.mapper;
import com.jason.pojo.User;
import java.util.List;
public interface UserMapper {
public List<User> queryUsers();
}
1.4 创建UserMapper.xml文件
编写上一步骤中的查询语句,select语句的id为UserMapper接口中的方法名,resultType为mybatis-config.xml中的配置
<?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="com.jason.mapper.UserMapper">
<select id="queryUsers" resultType="User">
select *
from user
</select>
</mapper>
1.5 配置mybatis-config.xml
mybatis-config.xml文件在本项目中主要负责放置一些别名的配置和映射的配置,具体的数据库连接信息放在下一小节的spring-dao.xml配置中。mybatis-config.xml的具体配置如下:
<?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>
<typeAlias type="com.jason.pojo.User" alias="User"/>
</typeAliases>
<!--映射-->
<mappers>
<package name="com.jason.mapper"/>
<!-- <mapper class="com.jason.mapper.UserMapper"/>-->
</mappers>
</configuration>
如果映射的接口文件不多的情况下,也可以使用下面的mapper class的形式进行配置,但是如果接口文件多的话,使用上面的包名的形式进行统一映射较为方便,
<!--映射-->
<mappers>
<mapper class="com.jason.mapper.UserMapper"/>
</mappers>
1.6 配置spring-dao.xml
spring-dao.xml是本文要重点关注的文件,涉及MyBatis-Spring的核心——SqlSessionTemplate。
- 首先配置DataSource数据源,这是Spring(Mybatis-Spring)链接数据库的关键
<!--使用Spring的数据源替换Mybatis的配置-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT"/>
<property name="username" value="root"/>
<property name="password" value="zs123456"/>
</bean>
- 然后利用SqlSessionFactoryBean创建SqlSessionFactory
<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--绑定Mybatis配置文件,设置别名和映射-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
由于我们在上一小节中提到需要使用Mybatis的别名和映射,所以这里需要绑定mybatis的配置文件——mybatis-config.xml。其中映射也可以使用mapperLocations属性配置,但是要注意需要将mybatis-config.xml中响应的映射信息去除,否则会重复。
<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--绑定Mybatis配置文件,设置别名和映射-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/jason/mapper/*.xml"/>
</bean>
上面配置中增加的mapperLocations是将com/jason/mapper包下所有以.xml结尾的文件都作映射。

本教程详细介绍了如何在MyBatis-Spring中使用SqlSessionTemplate来创建SqlSession,避免直接操作SqlSessionFactory。首先,列举了所需依赖,接着创建User类、UserMapper接口及XML文件。然后配置mybatis-config.xml和spring-dao.xml,特别是spring-dao.xml中配置SqlSessionFactoryBean和SqlSessionTemplate,用于数据库连接和事务管理。最后,通过SqlSessionTemplate实现数据库的查询操作。
249

被折叠的 条评论
为什么被折叠?



