東莞h5網(wǎng)站建設(shè)宣傳推廣策略
SpingBoot:整合Mybatis-plus+Druid
- 一、特別說(shuō)明
- 二、創(chuàng)建springboot新工程
- 三、配置
- 3.1 配置pom.xml文件
- 3.2 配置數(shù)據(jù)源和durid連接池
- 3.2.1 修改application.yml
- 3.2.2 新增mybatis-config.xml
- 3.3 編寫(xiě)攔截器配置類
- 四、自動(dòng)生成代碼
- 五、測(cè)試
- 六、編寫(xiě)mapper.xml,新增業(yè)務(wù)
- 6.1 新增功能函數(shù)
- 6.2 測(cè)試新函數(shù)
- 七、附件-mysql數(shù)據(jù)庫(kù)表
本文參考鏈接:
- [Java] Spring Boot 集成 MyBatis Plus + Druid
- 從0開(kāi)始springboot后臺(tái)管理項(xiàng)目-mybatis-plus/druid鏈接數(shù)據(jù)庫(kù)多數(shù)據(jù)源
- SpingBoot系列教程(一):整合Mybatis-plus+Druid
一、特別說(shuō)明
??MyBatis-PLus的3.0+版本對(duì)于LocalDateTime的支持有些差異,對(duì)于Druid的版本也有些要求。pom.xml文件里面的倆者的版本是我自己試驗(yàn)過(guò)的,可以正常使用,如果自己更換版本,出現(xiàn)LocalDateTime問(wèn)題,請(qǐng)注意版本問(wèn)題。
??代碼生成工具使用的是mybatis-plus-generator,但沒(méi)有完全按照官方文檔來(lái)搞,本著能用就行的目的,一些地方與官方有點(diǎn)出入,生成代碼之后,還需微調(diào)一下,請(qǐng)注意。
??數(shù)據(jù)庫(kù)文件MySql,末尾我會(huì)提供,當(dāng)然您也可以使用自己的數(shù)據(jù)庫(kù)。
回到目錄
二、創(chuàng)建springboot新工程
使用IDEA創(chuàng)建springboot工程過(guò)程如下:
- file->new -> project -> spring Initializr ->next
- 輸入項(xiàng)目名及包結(jié)構(gòu):
- 一路選擇next,然后點(diǎn)擊finish完成創(chuàng)建。
回到目錄
三、配置
3.1 配置pom.xml文件
根據(jù)自身的springBoot版本和durid、mysql、mybatisplus版本配置,我的配置示例如下:
<?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><!-- 導(dǎo)入springboot版本和框架依賴 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.12</version><relativePath></relativePath></parent><groupId>com.juxin</groupId><artifactId>durid-mybatisplus-demo</artifactId><version>0.0.1-SNAPSHOT</version><name>durid-mybatisplus-demo</name><description>durid與mybatisplus整合實(shí)戰(zhàn)</description><properties><java.version>1.8</java.version><mybatis-plus.version>3.4.3.1</mybatis-plus.version><druid.version>1.1.21</druid.version><freemarker.version>2.3.29</freemarker.version><!-- 跳過(guò)測(cè)試 --><skipTests>true</skipTests></properties><dependencies><!-- MySql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- Druid連接池SpringBoot整合druid-spring-boot-starter省去配置文件或者@Configuration來(lái)配置,直接將配置寫(xiě)在 application.ymlhttp://localhost:8081/xxx/druid/index.html--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><!-- mybatis-plus 組件 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!-- mybatis plus 代碼生成器依賴 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.2</version></dependency><!-- mybatis plus 代碼生成器模板,MyBatis-Plus 支持 Velocity(默認(rèn))、Freemarker --><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency><!--Spring Aop--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!-- Swagger是一個(gè)有用web界面的提供實(shí)體模型結(jié)構(gòu)展示,接口展示,調(diào)測(cè)等的一個(gè)工具--><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version></dependency><!-- lombok 省略get/set方法--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
<!-- <version>RELEASE</version>--><scope>compile</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.18</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins><!--資源文件引用--><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.yml</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build></project>
回到目錄
3.2 配置數(shù)據(jù)源和durid連接池
3.2.1 修改application.yml
修改application.yml文件,示例如下:
#mybatis-plus配置
mybatis-plus:configuration:#控制臺(tái)打印sqllog-impl: org.apache.ibatis.logging.stdout.StdOutImplcall-setters-on-nulls: true# 這里根據(jù)自己項(xiàng)目的包修改,掃描到自己的*xml文件mapper-locations: classpath:com/juxin/duridmybatisplusdemo/mapper/*.xml
spring:#數(shù)據(jù)源配置datasource:url: jdbc:mysql://10.20.1.51:3306/rmltest?characterEncoding=utf-8username: rootpassword: mysql2023driver-class-name: com.mysql.jdbc.Driver# 數(shù)據(jù)庫(kù)訪問(wèn)配置, 使用druid數(shù)據(jù)源(默認(rèn)數(shù)據(jù)源是HikariDataSource)type: com.alibaba.druid.pool.DruidDataSource# 鏈接池配置druid:# 連接池配置:大小,最小,最大initial-size: 5min-idle: 5max-active: 20# 連接等待超時(shí)時(shí)間max-wait: 30000# 配置檢測(cè)可以關(guān)閉的空閑連接,間隔時(shí)間time-between-eviction-runs-millis: 60000# 配置連接在池中的最小生存時(shí)間min-evictable-idle-time-millis: 300000# 檢測(cè)連接是否有,有效得select語(yǔ)句validation-query: select '1' from dual# 申請(qǐng)連接的時(shí)候檢測(cè),如果空閑時(shí)間大于time-between-eviction-runs-millis,執(zhí)行validationQuery檢測(cè)連接是否有效,建議配置為true,不影響性能,并且保證安全性。test-while-idle: true# 申請(qǐng)連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,建議設(shè)置為false,不然會(huì)會(huì)降低性能test-on-borrow: false# 歸還連接時(shí)執(zhí)行validationQuery檢測(cè)連接是否有效,建議設(shè)置為false,不然會(huì)會(huì)降低性能test-on-return: false# 是否緩存preparedStatement,也就是PSCache 官方建議MySQL下建議關(guān)閉 個(gè)人建議如果想用SQL防火墻 建議打開(kāi)# 打開(kāi)PSCache,并且指定每個(gè)連接上PSCache的大小pool-prepared-statements: truemax-open-prepared-statements: 20max-pool-prepared-statement-per-connection-size: 20# 配置監(jiān)控統(tǒng)計(jì)攔截的filters, 去掉后監(jiān)控界面sql無(wú)法統(tǒng)計(jì), 'wall'用于防火墻防御sql注入,stat監(jiān)控統(tǒng)計(jì),logback日志filters: stat,wall# Spring監(jiān)控AOP切入點(diǎn),如x.y.z.service.*,配置多個(gè)英文逗號(hào)分隔#aop-patterns: com.springboot.servie.*# lowSqlMillis用來(lái)配置SQL慢的標(biāo)準(zhǔn),執(zhí)行時(shí)間超過(guò)slowSqlMillis的就是慢connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# WebStatFilter監(jiān)控配置web-stat-filter:enabled: true# 添加過(guò)濾規(guī)則:那些訪問(wèn)攔截統(tǒng)計(jì)url-pattern: /*# 忽略過(guò)濾的格式:哪些不攔截,不統(tǒng)計(jì)exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'# StatViewServlet配置(Druid監(jiān)控后臺(tái)的Servlet映射配置,因?yàn)镾pringBoot項(xiàng)目沒(méi)有web.xml所在在這里使用配置文件設(shè)置)stat-view-servlet:enabled: true# 配置Servlet的訪問(wèn)路徑:訪問(wèn)路徑為/druid/**時(shí),跳轉(zhuǎn)到StatViewServlet,會(huì)自動(dòng)轉(zhuǎn)到Druid監(jiān)控后臺(tái)url-pattern: /druid/*# 是否能夠重置數(shù)據(jù)reset-enable: false# 設(shè)置監(jiān)控后臺(tái)的訪問(wèn)賬戶及密碼login-username: adminlogin-password: 123456# IP白名單:允許哪些主機(jī)訪問(wèn),默認(rèn)為“”任何主機(jī)# allow: 127.0.0.1# IP黑名單:禁止IP訪問(wèn),(共同存在時(shí),deny優(yōu)先于allow)# deny: 192.168.1.218# 配置StatFilterfilter:stat:log-slow-sql: true
回到目錄
3.2.2 新增mybatis-config.xml
??用來(lái)指定映射文件或者映射類:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 映射器:指定映射文件或者映射類 --><mappers><mapper resource="com/juxin/duridmybatisplusdemo/mapper/ClassInfoMapper.xml" /><mapper resource="com/juxin/duridmybatisplusdemo/mapper/StuMapper.xml" /><mapper resource="com/juxin/duridmybatisplusdemo/mapper/TopMapper.xml" /></mappers>
</configuration>
回到目錄
3.3 編寫(xiě)攔截器配置類
定義配置文件類,用于新建攔截器:
配置類內(nèi)容如下:
package com.juxin.duridmybatisplusdemo.mybatisplus;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/*** MybatisPlusInterceptor是一系列的實(shí)現(xiàn)InnerInterceptor的攔截器鏈,也可以理解為一個(gè)集合。* 可以包括如下的一些攔截器:* (1)自動(dòng)分頁(yè): PaginationInnerInterceptor(最常用)* (2)多租戶: TenantLineInnerInterceptor* (3)動(dòng)態(tài)表名: DynamicTableNameInnerInterceptor* (4)樂(lè)觀鎖: OptimisticLockerInnerInterceptor* (5)sql性能規(guī)范: IllegalSQLInnerInterceptor* (6)防止全表更新與刪除: BlockAttackInnerInterceptor*/
@Configuration
@EnableTransactionManagement
@MapperScan("com.juxin.duridmybatisplusdemo.dao")
class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();//向Mybatis過(guò)濾器中添加分頁(yè)攔截器interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 樂(lè)觀鎖interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;}
}
回到目錄
四、自動(dòng)生成代碼
創(chuàng)建代碼生成類,MyBatis-Plus 支持以 Velocity(默認(rèn))、Freemarker模式自動(dòng)生成代碼,具體如下:
利用mybatis plus代碼生成器模板,根據(jù)mysql表名等信息自動(dòng)生成代碼,包括:
- 1、表對(duì)應(yīng)的對(duì)象實(shí)體類,存在entity目錄下
- 2、mapper接口文件及xml文件,存在mapper目錄下
- 3、service接口及實(shí)現(xiàn)類,存在service目錄下
- 4、controller類,存在的目錄可以自定義
代碼自動(dòng)生成類的代碼如下:
package com.juxin.duridmybatisplusdemo.mybatisplus;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.fill.Column;
import org.springframework.util.ClassUtils;
import org.springframework.util.ResourceUtils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.*;
/*** 利用mybatis plus代碼生成器模板,根據(jù)mysql表名等信息自動(dòng)生成代碼,
*/
public class MybatisPlusGenerator {/// 獲取項(xiàng)目路徑public static void getPath() {List<String> paths = new ArrayList<>();try {//第四種String path = ResourceUtils.getURL("classpath:").getPath();paths.add("ResourceUtils: " + path);} catch (FileNotFoundException e) {e.printStackTrace();}try {//第一種File path = new File(ResourceUtils.getURL("classpath:").getPath());if (!path.exists()) {path = new File("");}paths.add("File(ResourceUtils): " + path.getAbsolutePath());paths.add("File(ResourceUtils): " + path.getPath());} catch (FileNotFoundException e) {e.printStackTrace();}//第二種String userDir = System.getProperty("user.dir");paths.add("user.dir: " + userDir);try {//第三種URL classLoaderResource = ClassUtils.getDefaultClassLoader().getResource("");paths.add("ClassLoader: " + classLoaderResource.getPath());paths.add("ClassLoader: " + URLDecoder.decode(classLoaderResource.getPath(), "utf-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();}// //第五種 spring boot打jar包,建議使用第五種
// ApplicationHome applicationHome = new ApplicationHome(getClass());
// File jarFile = applicationHome.getSource();
// paths.add("ApplicationHome: " + jarFile.getPath());
// paths.add("ApplicationHome: " + jarFile.getAbsolutePath());
// paths.add("ApplicationHome: " + jarFile.getParent());//第六種 spring boot打jar包或者不打包,都可以使用的,建議區(qū)分系統(tǒng)以完善路徑 本種也建議使用Properties properties = System.getProperties();paths.add("Properties(os.name): " + properties.getProperty("os.name"));paths.add("Properties(user.dir): " + properties.getProperty("user.dir"));for (String str : paths) {System.out.println(str);}}/// 生成代碼public static void main(String[] args) {getPath();//mysql配置信息String dbUrl = "jdbc:mysql://10.20.1.51:3306/rmltest?useUnicode=true&useSSL=false&characterEncoding=utf-8&serverTimezone=UTC";// String driverName = "com.mysql.cj.jdbc.Driver"; // ("com.mysql.jdbc.Driver");String dbUsername = "root";String dbPassword = "mysql2023";String projectPath = System.getProperty("user.dir");//工程目錄String globalConfigOutputDir = projectPath + "/src/main/java";//包結(jié)構(gòu)String globalConfigAuthor = "rml";//作者名String packageConfigParent = "com.juxin.duridmybatisplusdemo";//自定義的包結(jié)構(gòu)// https://www.mybatis-plus.com/guide/generator-new.htmlDataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(dbUrl, dbUsername, dbPassword);FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);fastAutoGenerator.globalConfig(builder -> {builder.enableSwagger() // 開(kāi)啟 swagger 模式.author(globalConfigAuthor).outputDir(globalConfigOutputDir);}).packageConfig(builder -> {builder.parent(packageConfigParent).controller("controller");//cotroller文件目錄})// 策略配置.strategyConfig((scanner, builder) -> {builder.addInclude(getTables(scanner.apply("請(qǐng)輸入表名,多個(gè)英文逗號(hào)分隔?所有輸入 all"))).controllerBuilder() // controller 策略配置.enableRestStyle() // 開(kāi)啟生成@ RestController 控制器.enableHyphenStyle() // 開(kāi)啟駝峰轉(zhuǎn)連字符.entityBuilder() // 實(shí)體策略配置.enableLombok() // 開(kāi)啟 lombok 模型.addTableFills(new Column("create_time", FieldFill.INSERT)).build();})// 使用Freemarker引擎模板,默認(rèn)的是Velocity引擎模板//.templateEngine(new FreemarkerTemplateEngine()).execute();}// 處理 all 情況protected static List<String> getTables(String tables) {return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));}
}
執(zhí)行結(jié)果查看:
回到目錄
五、測(cè)試
構(gòu)建測(cè)試用例,以classInfoMapper為例進(jìn)行測(cè)試:
- 在ClassInfoMapper上加上注解@Repository
@Repository它用于將數(shù)據(jù)訪問(wèn)層 (DAO 層 ) 的類標(biāo)識(shí)為 Spring Bean。具體只需將該注解標(biāo)注在 DAO類上即可。 同時(shí),為了讓 Spring 能夠掃描類路徑中的類并識(shí)別出 @Repository 注解, 需要在 XML 配置文件中啟用Bean 的自動(dòng)掃描功能
2. 在SpringBootTest中構(gòu)建測(cè)試函數(shù),如下所示:
package com.juxin.duridmybatisplusdemo;
import com.juxin.duridmybatisplusdemo.entity.ClassInfo;
import com.juxin.duridmybatisplusdemo.mapper.ClassInfoMapper;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class DuridMybatisplusDemoApplicationTests {@Autowiredprivate ClassInfoMapper classInfoMapper;@Testvoid contextLoads() {List<ClassInfo> cs = classInfoMapper.selectList(null);System.out.println("查詢結(jié)束,數(shù)據(jù)條目:"+cs.size());}
}
執(zhí)行結(jié)果如下:
回到目錄
六、編寫(xiě)mapper.xml,新增業(yè)務(wù)
6.1 新增功能函數(shù)
??mybatis提供的BaseMapper中包含大量的封裝函數(shù),但是在實(shí)際開(kāi)發(fā)中,經(jīng)常會(huì)需要自定義定制需要的功能函數(shù)。如果你想在Mapper接口中新增一個(gè)函數(shù),需要按照以下步驟進(jìn)行操作:
- 創(chuàng)建Mapper接口: 如果你還沒(méi)有創(chuàng)建Mapper接口,你需要首先創(chuàng)建一個(gè)。通常,這個(gè)接口會(huì)位于你的項(xiàng)目的dao包或者mapper包下。這里我放在dao包下了。
- 在接口中定義新的函數(shù): 在你的Mapper接口中,定義你新的函數(shù)。這個(gè)函數(shù)的簽名應(yīng)該符合你的需求。
示例如下:
import java.util.List;
/*** <p> 班級(jí)信息表 Mapper 接口* @author rml* @since 2023-09-20*/
//它用于將數(shù)據(jù)訪問(wèn)層 (DAO 層 ) 的類標(biāo)識(shí)為 Spring Bean。
// 具體只需將該注解標(biāo)注在 DAO類上即可。
// 同時(shí),為了讓 Spring 能夠掃描類路徑中的類并識(shí)別出 @Repository 注解,
// 需要在 XML 配置文件中啟用Bean 的自動(dòng)掃描功能
@Repository //代表持久層
public interface ClassInfoMapper extends BaseMapper<ClassInfo> {/**獲取某年級(jí)的某類的所有班級(jí)*/@Transactionalpublic List<ClassInfo> getClassInfoByName(String classification,String grade);
}
- 創(chuàng)建對(duì)應(yīng)的XML映射文件: 在你的資源文件夾下,創(chuàng)建一個(gè)與你的Mapper接口對(duì)應(yīng)的XML映射文件。這個(gè)文件通常會(huì)被命名為MyMapper.xml。在這個(gè)文件中,你需要定義你的SQL語(yǔ)句。
示例如下:
<?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.juxin.duridmybatisplusdemo.dao.ClassInfoMapper"><select id="getClassInfoByName" resultType="com.juxin.duridmybatisplusdemo.entity.ClassInfo">SELECT * FROM class_info<trim prefix="WHERE" prefixOverrides="AND"><if test="classification != null">AND classification=#{classification}</if><if test="grade != null "> AND grade=#{grade}</if></trim></select>
</mapper>
mapper.xml文件語(yǔ)法參考鏈接:
- 在配置文件中注冊(cè)Mapper: 在你的MyBatis配置文件中(通常是mybatis-config.xml),你需要注冊(cè)你的Mapper。這樣,MyBatis就可以知道你的Mapper和對(duì)應(yīng)的XML映射文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 映射器:指定映射文件或者映射類 --><mappers><mapper resource="com/juxin/duridmybatisplusdemo/mapper/ClassInfoMapper.xml" /><mapper resource="com/juxin/duridmybatisplusdemo/mapper/StuMapper.xml" /><mapper resource="com/juxin/duridmybatisplusdemo/mapper/TopMapper.xml" /></mappers>
</configuration>
6.2 測(cè)試新函數(shù)
編寫(xiě)測(cè)試用例:
代碼如下:
package com.juxin.duridmybatisplusdemo;//import com.juxin.duridmybatisplusdemo.entity.ClassInfo;
//import com.juxin.duridmybatisplusdemo.mapper.ClassInfoMapper;
import com.juxin.duridmybatisplusdemo.entity.ClassInfo;
import com.juxin.duridmybatisplusdemo.dao.ClassInfoMapper;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.annotation.Resource;
import java.util.List;@RunWith(SpringRunner.class)
@EnableTransactionManagement
@SpringBootTest
class DuridMybatisplusDemoApplicationTests {@Resourceprivate ClassInfoMapper classInfoMapper;@Testvoid contextLoads() {List<ClassInfo> cs = classInfoMapper.selectList(null);System.out.println("查詢結(jié)束,數(shù)據(jù)條目:"+cs.size());}@Testvoid testGetClassInfoByName(){try{List<ClassInfo> cs1 = classInfoMapper.getClassInfoByName("普通班","六年級(jí)");System.out.println("普通班-六年級(jí)的班級(jí)有:"+cs1.size());List<ClassInfo> cs2 = classInfoMapper.getClassInfoByName("普通班",null);System.out.println("普通班的班級(jí)有:"+cs2.size());List<ClassInfo> cs3 = classInfoMapper.getClassInfoByName(null,"六年級(jí)");System.out.println("六年級(jí)的班級(jí)有:"+cs3.size());}catch (Exception e){e.printStackTrace();}}
}
運(yùn)行進(jìn)行測(cè)試即可。
回到目錄
七、附件-mysql數(shù)據(jù)庫(kù)表
- 表結(jié)構(gòu):
-- rmltest.class_info definition
CREATE TABLE `class_info` (`name` varchar(10) NOT NULL COMMENT '班級(jí)名稱',`loc` varchar(100) DEFAULT NULL COMMENT '所在位置',`grade` varchar(100) DEFAULT NULL COMMENT '年級(jí)等級(jí):一年級(jí)、二年級(jí)...',`classification` varchar(100) DEFAULT NULL COMMENT '班級(jí)分類:普通班、實(shí)驗(yàn)班...',`date` datetime NOT NULL,PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='班級(jí)信息表';
- 數(shù)據(jù):
INSERT INTO rmltest.class_info (name,loc,grade,classification,`date`) VALUES('class1','一樓一號(hào)','六年級(jí)','普通班','2023-09-20 10:00:00'),('class2','一樓二號(hào)','六年級(jí)','實(shí)驗(yàn)班','2023-09-20 10:00:00'),('class3','一樓三號(hào)','六年級(jí)','普通班','2023-09-20 10:00:00'),('class4','二樓一號(hào)','五年級(jí)','普通班','2023-09-20 10:00:00');
回到目錄