DAO層使用Mybatis-generator生成映射文件連接Mysql入門測試用例(無限速源碼下載)杈绸,單條增刪改查CRUD(一)

問題背景

基本上項目都離不開連接數(shù)據(jù)庫的使用桨醋,而我們連接數(shù)據(jù)庫一般有全映射框架Hibernate和半映射框架Mybatis,這篇文章主要介紹半映射框架Mybatis-generator插件的使用

  • 插件可以自動生成mapper映射文件
  • 可以自己靈活更改sql語句
    注意事項:
  • 默認(rèn)已安裝mysql6或以上版本
  • 默認(rèn)已安裝JDK
  • 可以根據(jù)本文的項目搭建自己創(chuàng)建工程拄丰,也可以直接下載源碼進(jìn)行參考

DAO層使用Mybatis-generator生成映射文件連接Mysql入門測試用例(無限速源碼下載)府树,單條增刪改查CRUD(一)

DAO層使用Mybatis-generator生成映射文件連接Mysql入門測試用例(無限速源碼下載),selectByExample料按,insertSelective奄侠,countByExample,selectOneByExample的使用(二)

DAO層使用Mybatis-generator生成映射文件連接Mysql入門測試用例(無限速源碼下載)载矿,deleteByExample垄潮,batchInsert,updateByExampleSelective闷盔,updateByExample的使用(三)

DAO層使用Mybatis-generator生成映射文件連接Mysql入門測試用例(無限速源碼下載)弯洗,page分頁和limit的使用(四)

DAO層使用Mybatis-generator生成映射文件連接Mysql入門測試用例(無限速源碼下載),insert和update插入返回帶自增主鍵的兩種方式(五)

項目搭建

1 創(chuàng)建springboot工程逢勾,添加pom依賴

<?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.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.yg</groupId>
    <artifactId>mybatisGenerator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mybatisGenerator</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <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.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </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>
                <version>2.6.0</version>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!--mybatis-generator插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.5</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!--允許移動生成的文件 -->
                    <verbose>true</verbose>
                    <!-- 是否覆蓋 -->
                    <overwrite>true</overwrite>
                    <!-- 自動生成的配置 -->
                    <configurationFile>
                        src/main/resources/generatorConfig.xml
                    </configurationFile>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

其中牡整,這個是mybatis配置文件所在的位置

<configurationFile>
    src/main/resources/generatorConfig.xml
</configurationFile>

2 添加application.yml配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mysqlTest?serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
  sql:
    init:
      encoding: utf-8

mybatis:
  mapper-locations: mapper/mysql/*Mapper.xml

3 在resources中添加mybatis插件配置文件generatorConfig.xml,在里面配置mapper生成的路徑

<?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>
    <!--1溺拱、指定特定數(shù)據(jù)庫的jdbc驅(qū)動jar包的位置千萬千萬要指定正確,不然就創(chuàng)建不了文件-->
    <classPathEntry location="D:\software\javaFamily\repository\mysql\mysql-connector-java\8.0.27\mysql-connector-java-8.0.27.jar"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--2逃贝、配置數(shù)據(jù)庫連接信息  -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mysqlTest?serverTimezone=UTC"
                        userId="root"
                        password="123456">
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--3、指定Model生成的位置  -->
        <javaModelGenerator
                targetPackage="com.yg.mybatisgenerator.entity.mysql"
                targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>


        <!--4迫摔、指定sql映射文件生成的位置  -->
        <sqlMapGenerator
                targetPackage="mapper\mysql"
                targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--4.1沐扳、如果放程序包中-->
        <!--        <sqlMapGenerator -->
        <!--                targetPackage="com.anson.mapper"-->
        <!--                targetProject=".\src\main\java">-->
        <!--            <property name="enableSubPackages" value="true"/>-->
        <!--        </sqlMapGenerator>-->


        <!--5、指定dao接口生成的位置 .mapper接口  -->
        <!--  type生成類型含義,項目中基本都是用:XMLMAPPER
        type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對象
        type="MIXEDMAPPER",生成基于注解的Java Model 和相應(yīng)的Mapper對象
        type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口
        -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.yg.mybatisgenerator.dao.mysql"
                             targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>


        <!-- 6-1句占、單個表生成策略  -->
        <!--生成對應(yīng)表及類名-->
        <!--        <table tableName="t_dept" domainObjectName="Dept" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false">-->
        <!--       </table>-->

        <!-- 6-2沪摄、整個數(shù)據(jù)庫批量生成策略 -->
        <!-- table tableName="idmapping_record"
               enableCountByExample="false"
               enableUpdateByExample="false"
               enableDeleteByExample="false"
               enableSelectByExample="false"
               selectByExampleQueryId="false">
            <property name="useActualColumnNames" value="false"/>
        </table> -->

        <table tableName="generator_record">
            <property name="useActualColumnNames" value="false"/>
        </table>


    </context>
</generatorConfiguration>

4 在啟動類上添加mapper掃描注解

package com.yg.mybatisgenerator;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@MapperScan("com/yg/mybatisgenerator/dao/mysql")
@SpringBootApplication
public class MybatisGeneratorApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisGeneratorApplication.class, args);
    }

}

5 使用navicat或者sqlyog客戶端,在數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表

# 創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE mysqlTest;
# 選擇使用數(shù)據(jù)庫
USE mysqlTest;
# 創(chuàng)建表generator_record并插入相關(guān)數(shù)據(jù)
DROP TABLE IF EXISTS generator_record;

CREATE TABLE generator_record (
        id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '記錄id',
        create_time varchar(100) COMMENT '創(chuàng)建時間',
        update_time varchar(100) COMMENT '更新時間',
        PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

6 一定要先有表纱烘,再使用插件進(jìn)行生成mapper文件和sql的xml文件杨拐,在maven插件中選擇mybatis-generator,點擊generate



生成結(jié)果



7 編寫增刪改查CRUD測試程序

package com.yg.mybatisgenerator.springbootTest;


import com.yg.mybatisgenerator.dao.mysql.GeneratorRecordMapper;
import com.yg.mybatisgenerator.entity.mysql.GeneratorRecord;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
@Slf4j
public class GeneratorTest {

    @Autowired
    GeneratorRecordMapper generatorRecordMapper;

    // 插入測試
    @Test
    public void insertTest() {
        GeneratorRecord generatorRecord = GeneratorRecord.builder()
                .createTime("123456")
                .updateTime("789987")
                .build();
        int insert = generatorRecordMapper.insert(generatorRecord); // 成功返回1凹炸,插入一條數(shù)據(jù)成功
        log.info("insert: {}", insert);
        GeneratorRecord record = generatorRecordMapper.selectByPrimaryKey(1L);
        log.info("generatorRecord: {}", record);
    }

    // 查詢測試
    @Test
    public void selectTest() {
        GeneratorRecord record = generatorRecordMapper.selectByPrimaryKey(1L);
        log.info("generatorRecord: {}", record);
    }


    // 更新測試
    @Test
    public void updateTest(){
        GeneratorRecord generatorRecord = GeneratorRecord.builder()
                .id(2L)
                .createTime("111111")
                .updateTime("222222")
                .build();
        int i = generatorRecordMapper.updateByPrimaryKey(generatorRecord);
        log.info("i: {}", i);
    }

    // 刪除測試
    @Test
    public void deleteTest() {
        int i = generatorRecordMapper.deleteByPrimaryKey(1L);
        log.info("i: {}", i);
    }
}

8 最后的目錄結(jié)構(gòu)如下


測試結(jié)果

1 插入數(shù)據(jù)庫


心得

  • 測試了單條的增刪改查用例戏阅,實際上為了減小mysql連接的資源開銷,都是使用的批量查詢和插入等




作為程序員第 46 篇文章啤它,每次寫一句歌詞記錄一下奕筐,看看人生有幾首歌的時間舱痘,wahahaha ...

Lyric:又何時變得渺小

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市离赫,隨后出現(xiàn)的幾起案子芭逝,更是在濱河造成了極大的恐慌,老刑警劉巖渊胸,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旬盯,死亡現(xiàn)場離奇詭異,居然都是意外死亡翎猛,警方通過查閱死者的電腦和手機胖翰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來切厘,“玉大人萨咳,你說我怎么就攤上這事∫吒澹” “怎么了培他?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長遗座。 經(jīng)常有香客問我舀凛,道長,這世上最難降的妖魔是什么途蒋? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任猛遍,我火速辦了婚禮,結(jié)果婚禮上号坡,老公的妹妹穿的比我還像新娘螃壤。我一直安慰自己,他們只是感情好筋帖,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冤馏,像睡著了一般日麸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逮光,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天代箭,我揣著相機與錄音,去河邊找鬼涕刚。 笑死嗡综,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的杜漠。 我是一名探鬼主播极景,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼察净,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了盼樟?” 一聲冷哼從身側(cè)響起氢卡,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晨缴,沒想到半個月后译秦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡击碗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年筑悴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稍途。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡阁吝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晰房,到底是詐尸還是另有隱情求摇,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布殊者,位于F島的核電站与境,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏猖吴。R本人自食惡果不足惜摔刁,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望海蔽。 院中可真熱鬧共屈,春花似錦、人聲如沸党窜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幌衣。三九已至矾削,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豁护,已是汗流浹背哼凯。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楚里,地道東北人断部。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像班缎,于是被迫代替她去往敵國和親蝴光。 傳聞我的和親對象是個殘疾皇子她渴,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容