目录
- 回顾ssm整合mybatis
- springboot整合mybatis
- 事务注解
- 回顾之前ssm框架如何处理事务
- springboot项目里面如何配置事务
回顾ssm整合mybatis
在ssm框架里面整合mybatis .
Spring框架(四)spring整合mybatis全部流程,附代码
也就是自己在src下创建并配置applicationcontext.xml文件,里面写数据源,也就是创建bean对象放到容器里面,以后哪个地方需要,直接从容器里面拿就可以了。
springboot整合mybatis
之前我们是用springboot项目整合了jdbc,现在整合mybatis。
只要导入以下的依赖,那么就可以使用mybatis框架了
如果是oracle的数据库,那么就将驱动变为oracle
代码语言:javascript复制<!--mysql的驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--springboot 和mysql 整合的jar包-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
oracle的驱动
代码语言:javascript复制 <!-- 数据库驱动包 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
只要导入了以上的mybatis的配置文件,相当与我们之前spring mybatis的项目的开发环境搭建好了,
就相当于applicationcontext.xml里面关于mybatis的相关的配置也配好了。
但是我们要连哪个数据库呢?所以我们要自己配自己的数据库的用户名和密码
既然依赖已经导入,那么就开始写yml配置吧,里面的代码是
代码语言:javascript复制spring:
datasource:
username: root
password: '060708'
#?serverTimezone=UTC解决时区的报错
url: jdbc:mysql://localhost:3306/class?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource # 自定义数据源
#Spring Boot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
其实和jdbc的时候一样,相当于yml里面的就没有变,相当于数据源的写法就是那,不变
之后测试的时候,先创建一个实体类,之后用mybatis操作实体类
代码语言:javascript复制@Data
@NoArgsConstructor
@AllArgsConstructor
public class Department {
private Integer id;
private String departmentName;
}
创建mapper目录以及对应的 Mapper 接口
代码语言:javascript复制//@Mapper : 表示本类是一个 MyBatis 的 Mapper
@Mapper
@Repository
public interface DepartmentMapper {
// 获取所有部门信息
List<Department> getDepartments();
// 通过id获得部门
Department getDepartment(Integer id);
}
对应的Mapper映射文件
代码语言:javascript复制<?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.kuang.mapper.DepartmentMapper">
<select id="getDepartments" resultType="Department">
select * from department;
</select>
<select id="getDepartment" resultType="Department" parameterType="int">
select * from department where id = #{id};
</select>
</mapper>
之后我们在yml里面还要写扫描mapper的路径,因为要将mapper层的接口和这个xml关联起来,所以在配置文件里面写这个xml扫描路径,告诉springboot项目,找xml到这个地方找
这个还可以自己写一个mybatis的配置类,在类里面将这个路径也配置了,yml里面就不需要配置了
maven配置资源过滤问题,以下这个配置的原因是,有时候我们会在写java代码的地方也写xml文件,打包的时候不会将写java代码的地方的xml文件也打包,所以在pom里面写上,告诉项目以后打包的时候要将xml也打包。
如果你不打算在写java的地方写xml文件,那么就不需要在pom里面写这个,什么是写java代码的地方呢?
这个mapper里面
代码语言:javascript复制<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
代码语言:javascript复制@RestController
public class DepartmentController {
@Autowired
DepartmentMapper departmentMapper;
// 查询全部部门
@GetMapping("/getDepartments")
public List<Department> getDepartments(){
return departmentMapper.getDepartments();
}
// 查询全部部门
@GetMapping("/getDepartment/{id}")
public Department getDepartment(@PathVariable("id") Integer id){
return departmentMapper.getDepartment(id);
}
}
事务注解
回顾之前ssm框架如何处理事务
Spring框架(九)为什么使用SpringTX框架,如何使用,附代码
总结:也就是ssm项目里面,我们在applicationcontext.xml里面写事务相关的代码,告诉框架哪些方法需要配置事务。
springboot项目里面如何配置事务
只需要在要加事务的上面加这个注解,那么就配置了,和之前ssm项目,写的那么多的配置的功能一模一样。