spring boot 整合mybatis关闭自动提交_峰哥说技术系列-15 Spring Boot整合MyBatis

本文介绍如何在Spring Boot项目中整合MyBatis,并详细解释如何关闭自动提交功能。通过创建数据库、设置相关依赖、配置properties文件、定义实体类、Mapper接口、Service和Controller,实现对数据库的CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

48a616dc1f5f7b4b880bd03acfd458e7.png

今日份主题

Spring Boot整合MyBatis

MyBatis 框架是一个持久层框架,是 Apache 下的顶级项目。Mybatis 可以让开发者的主要精力放在 sql 上,通过 Mybatis 提供的映射方式,自由灵活的生成满足需要的 sql 语句。使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs 映射成数据库中的记录,在国内使用非常广泛。这里主要通过两种方式来对 Spring Boot 集成 MyBatis给大家进行讲解。

一般在Spring+SpringMVC中整合MyBatis步骤还是有点复杂的,要配置多个Bean,Spring Boot中对此做了进一步的简化,使MyBatis基本上可以做到开箱即用。特别说明,关于MyBatis的连表查询问题,不是Spring Boot需要解决的问题,有需要可以查看我之前的关于MyBatis的系列文章。

案例

通过MySql数据库系统管理数据,对bookdb01数据库中的Book表通过MyBatis进行增、删、改、查的操作。

01.创建数据库和表,脚本如下

bookdb01数据库

CREATE DATABASE IF NOT EXISTS*/`bookdb01` DEFAULT CHARACTER SET utf8 */;

USE `bookdb01`;

/*Table structure for table `book` */

DROP TABLE IF EXISTS `book`;

CREATE TABLE `book` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(100) DEFAULT NULL,

`author` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

/*Data for the table `book` */

insert into `book`(`id`,`name`,`author`) values (1,'三国演义','罗贯中'),(2,'红楼梦','曹雪芹');

bookdb02

CREATE DATABASE IF NOT EXISTS*/`bookdb01` DEFAULT CHARACTER SET utf8 */;

USE `bookdb01`;

/*Table structure for table `book` */

DROP TABLE IF EXISTS `book`;

CREATE TABLE `book` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(100) DEFAULT NULL,

`author` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

/*Data for the table `book` */

insert into `book`(`id`,`name`,`author`) values (1,'三国演义','罗贯中'),(2,'红楼梦','曹雪芹');

这里创建了2个数据库,这是为后面的多数据源做准备工作。这里我们使用bookdb01数据库,特此说明。

02创建Spring Boot工程chapter05-mybatis

过程省略

03添加web、mysql、mybatis、durid依赖。


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>

04在application.properties中进行相关的配置

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/bookdb01?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234
#当把mapper文件配置到resources文件夹的时候,需要指定mapper文件的位置
mybatis.mapper-locations=classpath:/mapper/*.xml
#实体类的别名,这些都可以省略
mybatis.type-aliases-package=com.java.chapter05.entity

说明:注意红色字体部分。当把mapper.xml文件配置在

src/main/java/mapper的时候,必须在pom.xml中添加资源的打包方式。否则映射配置文件无法打包,会出现错误。该如何解决呢?其实很简单,我们只要在pom.xml中添加一下资源的打包位置即可。

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

05创建entity包,创建实体类Book

public class Book {
private Integer id;
private String name;
private String author;

//getter和setter省略...

}

06创建mapper包,创建接口BookMapper

@Mapper

public interface BookMapper {
public List<Book> getBooks();
public int addBook(Book book);
}

我们必须在接口上面添加@Mapper注解。但是这有个问题,如果每个接口上面都写太麻烦。还有一种解决方式就是在启动类添加注解。@MapperScan(basePackages=“mapper所在的包”)。大家可以把BookMapper接口上的@Mapper注解注释,测试一下。

07创建service包,创建服务类BookService

@Service
@Transactional
public class BookService {
@Autowired
private BookMapper bookMapper;
public List<Book> getBooks(){
return bookMapper.getBooks();
}
public int addBook(Book book){
return bookMapper.addBook(book);
}
}

08创建controller包,创建BookController

@RestController
@RequestMapping("/book")
public class BookController {
@Autowired
private BookService bookService;
@GetMapping("/")
public List<Book> getBooks(){
return bookService.getBooks();
}
@PostMapping("/")
public int addBook(@RequestBody Book book){
return bookService.addBook(book);
}
}

09测试

在postman中选择get提交,输入

http://localhost:8080/book/,测试查看全部图书信息。

d0cc6273480c11954567cf516eb7fd17.png

在postman中选择提交方式post,同时选择body和json,并输入参数。url输入http://localhost:8080/book/,添加图书信息。

72429b03da5600512ffe480d13182686.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值