(七)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

相关