引言
今天带来一篇SpringBoot整合MyBatis的文章
SpringBoot的创建
我们采用Maven项目管理,接下来选择Spring Initializr,接下来我们选择版本这里我们选择java 8,因为本人是JDK 8,当然有高版本的也可以选择高版本的SpringBoot版本。
接下来我们来为我们的项目来勾选所需的依赖,SpringBoot很强大的一个特性就在于其超强的自动化的打包处理等等,同时其可以快速高效的集成我们所需要的技术依赖。
我们这个项目可以只勾选MyBatis Frameword和MySQL Driver的依赖,完成MyBatis框架的导入及连接MySQL。
但是笔者最近想做一个线上商城的小项目,所以我还勾选了web,Redis等依赖。
创建之后,一段时间内是不能写代码的,前一段加载是联网下载,后半部分是看电脑读写能力的,等依赖全部完成之后就可以写代码了
(当然,即使我们不勾选或者选错了选多了都可以在最终的pom.xml进行依赖的添加与删除的管理)
我的pom.xml文件
<?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 https://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.7.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>LyyShop</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>LyyShop</name>
<description>LyyShop</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<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.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
接下来我们开始整合MyBatis和连接MySQL
连接MySQL并整合MyBatis
我们首先找到application.properties文件,将其后缀名改成yml
yml和properties有什么区别呢?
properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。
properties 配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的配置文件格式,而 yml 可以看做是对 properties 配置文件的升级,属于 Spring Boot 的“新版”配置文件。
properties 和 yml 的区别主要体现在以下 4 点:
- 定义和定位不同;
- 语法不同;
- yml 更好的配置多种数据类型;
- yml 支持多种语言、通用性更好。
application.yml代码如下:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_springboot
username: root
password: 123456
成功连接上数据库,接下来我们来继续建立包扫描
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db_springboot
username: root
password: 123456
mybatis:
mapper-locations: classpath:Dao/*.xml
接下来我们来测试
注意:我们建立的各种包和类一定要与系统自动生成的加载的public static void main的main在一个包下
package com.example.lyyshop;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LyyShopApplication {
public static void main(String[] args) {
SpringApplication.run(LyyShopApplication.class, args);
}
}
这是系统生成的文件,千万不要删掉,也不要建立的文件不和他在一个包下。
我们接下来来写测试类和Dao层
我们在生成的main文件同一个包下建立Dao包,用于Dao层面的代码书写
这个是DaoMapper的java接口文件
package com.example.lyyshop.Dao;
import com.example.lyyshop.RealClass.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface DaoMapper {
public int Querry();
}
我们在resource目录下也同样建立Dao文件夹
创建一个DaoMapper.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.example.lyyshop.Dao.DaoMapper">
<select id="Querry" resultType="java.lang.Integer">
select * from cs;
</select>
</mapper>
接下来我们在测试类中调用这个方法
package com.example.lyyshop;
import com.example.lyyshop.Dao.DaoMapper;
import com.example.lyyshop.RealClass.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class LyyShopApplicationTests {
@Autowired
private DaoMapper daoMapper;
@Test
void contextLoads() {
System.out.println(daoMapper.Querry());
}
}
运行测试类(需要事先准备一个db_springboot的数据库,库下面有一张cs的表,表里有一个id项)