(七)Java版接口自动化-使用Springboot整合Mybatis-Plus对MySQL进行数据操作
一、在pom.xml文件中添加要用到的包,代码如下:
<dependency> <groupId>com.baomidougroupId> <artifactId>mybatis-plus-boot-starterartifactId> <version>3.2.0version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <scope>runtimescope> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <optional>trueoptional> dependency>
自动生成Entity+Dao+Mapper的插件
<plugin> <groupId>org.mybatis.generatorgroupId> <artifactId>mybatis-generator-maven-pluginartifactId> <version>1.4.0version> plugin>
二、数据库配置信息
D:\github\interface-test\interfacetest\src\test\resources\application.yml
spring: datasource: url: jdbc:mysql://rm-2vcgyh64om3x3bd2beo.mysql.cn-chengdu.rds.aliyuncs.com:3306/pre_test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true username: pre_hxgy password: XHZYJuiRyJqWO*4v driver-class-name: com.mysql.cj.jdbc.Driver application: name: studb server: port: 8080 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.studb.entity
三、自动生成mapper,dao,entity的文件
<?xml version="1.0" encoding="UTF-8"?> DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <classPathEntry location="D:\maven\.m2\repository\mysql\mysql-connector-java\8.0.25\mysql-connector-java-8.0.25.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <property name="suppressAllComments" value="true"/> commentGenerator> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://rm-2vcgyh64om3x3bd2beo.mysql.cn-chengdu.rds.aliyuncs.com:3306/pre_test?serverTimezone=UTC&useSSL=false" userId="pre_hxgy" password="XHZYJuiRyJqWO*4v"> jdbcConnection> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> javaTypeResolver> <javaModelGenerator targetPackage="com.automation.interfacetest.entity" targetProject="\github\interface-test\interfacetest\src\main\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> javaModelGenerator> <sqlMapGenerator targetPackage="mapper" targetProject="\github\interface-test\interfacetest\src\test\resources"> <property name="enableSubPackages" value="true" /> sqlMapGenerator> <javaClientGenerator type="XMLMAPPER" targetPackage="com.automation.interfacetest.dao" targetProject="\github\interface-test\interfacetest\src\main\java"> <property name="enableSubPackages" value="true" /> javaClientGenerator> <table tableName="auto_test_date" domainObjectName="AutoTestDate" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" /> context> generatorConfiguration>
四、测试
数据库对应的表结构:
CREATE TABLE `auto_test_date` ( `id` bigint(20) NOT NULL, `loginPhone` varchar(20) DEFAULT NULL, `name` varchar(32) DEFAULT NULL, `idCard` varchar(32) DEFAULT NULL, `addTime` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
启动类添加MapperScan注解。指定mapper扫描路径。指定后就不要在mapper层写@Mapper注解了
@MapperScan("com.automation.interfacetest.dao")
package com.automation.interfacetest; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.automation.interfacetest.dao") public class InterfacetestApplication { public static void main(String[] args) { SpringApplication.run(InterfacetestApplication.class, args); } }
编写或者用插件自动生成mapper,entity,mapper.xml
BaseMapper 接口中封装了一系列 CRUD 常用操作,可以直接使用,操作实体类的mapper代码如下,AutoTestDateMapper.java
package com.automation.interfacetest.dao; import com.automation.interfacetest.entity.AutoTestDateEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @Repository public interface AutoTestDateMapper extends BaseMapper{ AutoTestDateEntity queryAutuoTestDate(@Param("name") String name); }
实体类代码如下,AutoTestDateEntity.java
package com.automation.interfacetest.entity; import java.util.Date; public class AutoTestDateEntity { private Long id; private String loginphone; private String name; private String idcard; private Date addtime; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getLoginphone() { return loginphone; } public void setLoginphone(String loginphone) { this.loginphone = loginphone == null ? null : loginphone.trim(); } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard == null ? null : idcard.trim(); } public Date getAddtime() { return addtime; } public void setAddtime(Date addtime) { this.addtime = addtime; } }
AutoTestDateMapper.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.automation.interfacetest.dao.AutoTestDateMapper"> <resultMap id="BaseResultMap" type="com.automation.interfacetest.entity.AutoTestDateEntity"> <result column="id" jdbcType="BIGINT" property="id" /> <result column="loginPhone" jdbcType="VARCHAR" property="loginphone" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="idCard" jdbcType="VARCHAR" property="idcard" /> <result column="addTime" jdbcType="TIMESTAMP" property="addtime" /> resultMap> <sql id="Base_Column_List"> id, loginPhone, name, idCard, addTime sql> <select id="queryAutuoTestDate" parameterType="java.lang.String" resultMap="BaseResultMap"> SELECT <include refid="Base_Column_List">include> FROM pre_test.auto_test_date WHERE name = #{name} limit 1 select> mapper>
AbstractTestNGSpringContextTests:测试类只有继承了该类才能拥有注入实例能力,否则注入报错
package com.automation.interfacetest; import com.automation.interfacetest.dao.AutoTestDateMapper; import com.automation.interfacetest.entity.AutoTestDateEntity; import com.automation.interfacetest.service.LoginService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; import org.testng.annotations.Test; /** * @title: * @author: 2022/1/1216:45 * @date: 2022/1/1216:45 */ @SpringBootTest(classes = InterfacetestApplication.class) public class TestMysql extends AbstractTestNGSpringContextTests { @Autowired AutoTestDateMapper autoTestDateMapper; @Test public void test000(){ AutoTestDateEntity sql =autoTestDateMapper.queryAutuoTestDate("张三"); System.out.println("day:" + sql.getName()); } }
附上完整的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.0modelVersion> <parent> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-parentartifactId> <version>2.5.2version> <relativePath/> parent> <groupId>com.automationgroupId> <artifactId>interfacetestartifactId> <version>0.0.1-SNAPSHOTversion> <name>interfacetestname> <description>Demo project for Spring Bootdescription> <properties> <java.version>1.8java.version> properties> <dependencies> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> <dependency> <groupId>org.testnggroupId> <artifactId>testngartifactId> <version>6.10version> dependency> <dependency> <groupId>com.relevantcodesgroupId> <artifactId>extentreportsartifactId> <version>2.41.1version> dependency> <dependency> <groupId>com.vimalselvamgroupId> <artifactId>testng-extentsreportartifactId> <version>1.3.1version> dependency> <dependency> <groupId>com.aventstackgroupId> <artifactId>extentreportsartifactId> <version>3.0.6version> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>fastjsonartifactId> <version>1.2.32version> dependency> <dependency> <groupId>org.apache.poigroupId> <artifactId>poiartifactId> <version>4.1.0version> dependency> <dependency> <groupId>org.apache.poigroupId> <artifactId>poi-ooxmlartifactId> <version>4.1.0version> dependency> <dependency> <groupId>com.baomidougroupId> <artifactId>mybatis-plus-boot-starterartifactId> <version>3.2.0version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <scope>runtimescope> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <optional>trueoptional> dependency> dependencies> <build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> plugin> <plugin> <groupId>org.mybatis.generatorgroupId> <artifactId>mybatis-generator-maven-pluginartifactId> <version>1.4.0version> plugin> plugins> build> project>
参考文章:
https://blog.csdn.net/q736317048/article/details/110284582
https://www.jianshu.com/p/28d6d9a56b62