SpringBoot整合Mybatis
Posted AlaGeek
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot整合Mybatis相关的知识,希望对你有一定的参考价值。
1、创建项目
会的人可以直接创建SpringBoot项目,通过开发工具添加依赖,我这边就新建Maven工程,一步步来。
以下为工程文件结构:
2、添加依赖
pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.example</groupId>
<artifactId>testmysql</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<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>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
</project>
以上依赖中,mybatis和mysql的依赖是必须加的,lombok是为了少写代码,web依赖是为了能直接在页面上显示结果。
3、添加配置文件
配置文件如下:
# 线程池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 数据库地址,personal_blog为数据库【自行替换】
spring.datasource.url=jdbc:mysql:///personal_blog
# 数据库账户【自行替换】
spring.datasource.username=root
# 数据库密码【自行替换】
spring.datasource.password=123456
4、数据库
添加完配置文件,来看看数据库里的表结构,如图:
表结构比较简单,毕竟是个样例,包含三个属性,一个自增主键id,两个字符串,其对应的实体类对象Book如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book
private Integer id;
private String name;
private String author;
5、dao层
实体类有了,就要考虑从数据库里拿数据了,按照平常开发,对数据库的操作,我们总结为CRUD,也就是增删改查,本文我就讲个查,文末我会放代码链接,其它三种操作请自行阅读代码,我觉得这样举一反三应该学习的更深刻,最主要的是我懒,哈哈哈哈。
请看BookMapper接口:
@Mapper
public interface BookMapper
Book getBookById(Integer id);
@Mapper注解是为了使SpringBoot能够识别到我们BookMapper,从而创建Bean,这里我们讲getBookById,就是根据id查询数据库。
其对应的BookMapper.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.alageek.study.mapper.BookMapper">
<select id="getBookById" parameterType="int" resultType="com.alageek.study.entity.Book">
SELECT * FROM book WHERE id=#id
</select>
</mapper>
此处需要注意的有以下几点:
- namespace:命名空间要找对对应的Mapper接口,这里也就是BookMapper
- select标签的id,要对应BookMapper里某个函数名
- parameterType对应函数的参数类型
- resultType也要对应函数的返回类型
6、应用
写完dao层,其实就可以拿到数据库数据了,不过我们拿到后,要给它显示到页面上,才知道已经拿到了,所以按照规定,先写个Service层,BookService如下:
@Service
public class BookService
@Autowired
private BookMapper bookDao;
public Book getBookById(Integer id)
return bookDao.getBookById(id);
service为业务层,我们的业务就是显示从数据库中拿到的数据,所以这里直接掉dao层的接口即可。
再然后就是controller层,如下为BookController代码:
@RestController
public class BookController
@Autowired
private BookService bookService;
@GetMapping("/bookOps")
public String bookOps()
return bookService.getBookById(1).toString();
这部分代码逻辑就是从获取数据库Book表中id为1的数据,然后返回给前端。
7、测试
要测试,首先先得给数据库添加数据,这里我添加了两条:
然后启动程序,在浏览器输入http://localhost:8080/bookOps,看到如下页面即表示成功:
8、博主的话
按照我的步骤来,整合MyBatis不成问题,不过稍微改一下代码或者工程结构,没准就出问题了,这么说自然是因为我遇到了这个问题,有兴趣的请移步另一篇博客——记一次SpringBoot整合MyBatis时找不到Mapper.xml的BUG定位
9、资源地址
以上是关于SpringBoot整合Mybatis的主要内容,如果未能解决你的问题,请参考以下文章
springboot.springboot用最简单的方式整合mybatis
如何整合 springboot + mybatis-plus(系列一)
SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源配置 MyBatis事务控制druid 监控)