文章目錄
- 一、創建 SpringBoot 項目
- 二、添加 MyBatis 依賴
- 三、項目結構和數據庫表結構
- 四、項目代碼
- 1、application.yml
- 2、TestController
- 3、TbUser
- 4、TbUserMapper
- 5、TestServiceImpl
- 6、TestService
- 7、TestApplication
- 8、TbUserMapper.xml
- 9、MyBatisTest
- 五、瀏覽器測試結果
- 六、Junit 測試結果
- 七、完整 pom.xml 文件
如果對于
MyBatisPlus
的常見基礎知識不了解,可以點擊 MyBatisPlus 基礎原理、常見注解和注意事項簡介
如果有對如何使用
SpringBoot
整合MyBatisPlus
框架不清楚的,可以點擊 超詳細的SpringBoot項目整合MyBatisPlus框架步驟示例,并附帶瀏覽器和Junit測試結果示例代碼
一、創建 SpringBoot 項目
本文采用 idea
創建簡單的 maven
項目, JDK
版本為1.8。圖上項目名字無所謂,我是使用 MayBatisPlus
那個項目修改過來的。
二、添加 MyBatis 依賴
依賴項中的都很重要,包括 MyBatis
和 MySQL
的依賴,還有 SpringBoot
項目的起步依賴,以及對實體類非常有用的 lombok
依賴。MyBatis 和 MyBatisPlus 項目的只是各自的依賴不同,其他都是相同的。
<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.10</version>
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency>
</dependencies>
三、項目結構和數據庫表結構
該項目整體結構如下:
數據庫表結構如下:
四、項目代碼
1、application.yml
本文使用 yml 的配置文件,配置文件中按層級配置好數據庫的信息,項目啟動時,會自動根據配置信息連接到數據庫。注:要保證數據庫是啟動狀態的。
配置文件中 mapper-locations
要注意配置,如果你的文件名是自定義的,很可能會找不到 mapper
文件位置。
spring:datasource:url: jdbc:mysql://10.100.5.174:8306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNulldriver-class-name: com.mysql.jdbc.Driverusername: rootpassword: 各位大佬點點贊mybatis:mapper-locations: classpath:mybatis-mapper/*.xml
2、TestController
這里沒啥好說的,如果不清楚,說明基礎沒有學通。
@RestController
public class TestController {@Autowiredprivate TestService testService;@GetMapping("/select")public TbUser selectById(@Param("id") int id ){return testService.selectById(id);}@GetMapping("/add")public void addTbUser(@Param("id") int id, @Param("username") String username, @Param("password") String password) {TbUser tbUser = new TbUser(id, username, password);testService.addUser(tbUser);}
}
3、TbUser
實體類,一般來說,要與數據庫中的表對應上,這里使用了 @TableName
@TableId
@TableField
等 MyBatisPlus
中的注解進行對應。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TbUser {private int id;private String username;private String password;
}
4、TbUserMapper
這里的代碼是與 mapper.xml
文件相對應的,xml
文件中的 id
就是指的這個接口中的方法名。
@Mapper
public interface TbUserMapper {TbUser selectById(int id);void addUser(TbUser tbUser);
}
5、TestServiceImpl
@Service
public class TestServiceImpl implements TestService {@Autowiredprivate TbUserMapper tbUserMapper;@Overridepublic TbUser selectById(int id) {return tbUserMapper.selectById(id);}@Overridepublic void addUser(TbUser tbUser) {tbUserMapper.addUser(tbUser);}
}
6、TestService
public interface TestService {TbUser selectById(int id);void addUser(TbUser tbUser);
}
7、TestApplication
@MapperScan("com.wen.mapper")
@SpringBootApplication
public class TestApplication {public static void main(String[] args) {SpringApplication.run(TestApplication.class);}
}
8、TbUserMapper.xml
文件中有兩點要注意:
namespace
:對應哪一個文件的數據庫表格,要與TbUserMapper
對應。id
屬性:對應TbUserMapper
接口中的方法名。
<?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.wen.mapper.TbUserMapper"><select id="selectById" resultType="com.wen.dto.TbUser">SELECT username, password FROM tb_user WHERE id = #{id}</select><insert id="addUser" parameterType="com.wen.dto.TbUser">INSERT INTO tb_user VALUES (#{id}, #{username}, #{password})</insert>
</mapper>
9、MyBatisTest
用于 Junit
測試使用,這里要注意,因為需要連接數據庫,所以要先啟動 SpringBoot
項目,所以要添加以下兩個注解。
@RunWith(SpringRunner.class)
- 因為
SpringRunner.class
繼承了SpringJUnit4ClassRunner.class
且沒有進行任何修改。 - 所以
@RunWith(SpringRunner.class)
基本等同于 `@RunWith(SpringJUnit4ClassRunner.class)`` 。 - 作用是讓測試在
Spring
容器環境下執行。 - 如果測試類中無此注解,將導致
service
,dao
等自動注入失敗。
- 因為
@SpringBootTest(classes = TestApplication.class)
- 確保注解的主類(通常是包含
main
方法的類)在測試類的同一包中或者其子包中。 @SpringBootTest
默認會從當前包中查找主類。
- 確保注解的主類(通常是包含
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
public class MyBatisTest {@Autowiredprivate TestService testService;@Testpublic void selectTbUser(){TbUser tbUser = testService.selectById(3);System.out.println(tbUser.toString());}@Testpublic void addTbUser(){testService.addUser(new TbUser(4, "wangwu", "6677"));}
}
五、瀏覽器測試結果
啟動 TestApplication
,也就是啟動 SpringBoot
項目,起步依賴會自動識別項目 application.yml
文件中的數據庫配置信息,連接數據庫,根據 controller
中的訪問路徑添加參數,就可以做到對數據庫的增刪改查。
如圖所示,在瀏覽器上訪問 localhost:8080/select?id=2
,目的是查詢 ID 為 2 的 TbUser
信息。
如圖所示,在瀏覽器上訪問 localhost:8080/add?id=3&username=lisi&password=3344
,目的是添加一條用戶記錄。
可以查看數據庫對應信息。
六、Junit 測試結果
運行 selectTbUser()
方法,會出現以下結果。對應瀏覽器上查詢方法。
運行 addTbUser()
方法,會出現以下結果。對應瀏覽器上查詢方法。
可以查看數據庫對應信息。
七、完整 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wen</groupId><artifactId>springboot-mybatis</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.7.10</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency></dependencies>
</project>