MyBatis Generator自動生成代碼

一寄啼、創(chuàng)建springboot項(xiàng)目:


image.png

image.png

image.png

二、添加依賴,其他的依賴是創(chuàng)建springboot項(xiàng)目時自動添加的依賴:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.5</version>
        </dependency>

三饲宿、添加插件:


image.png
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
                    <!-- 在控制臺打印執(zhí)行日志 -->
                    <verbose>true</verbose>
                    <!-- 重復(fù)生成時會覆蓋之前的文件-->
                    <overwrite>true</overwrite>
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                </configuration>
            </plugin>

添加完依賴和插件后更新pom文件

四腹尖、創(chuàng)建3個文件夾:


image.png

五糊渊、已有數(shù)據(jù)庫:


image.png

六爷耀、創(chuàng)建generatorConfig.xml:
image.png
<?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>
    <!--&lt;!&ndash;導(dǎo)入屬性配置&ndash;&gt;-->
    <!--<properties resource="application.properties"></properties>-->

    <!--&lt;!&ndash;指定特定數(shù)據(jù)庫的jdbc驅(qū)動jar包的位置&ndash;&gt;-->
    <!--<classPathEntry location="${jdbc.driverLocation}"/>-->


    <!-- context 是逆向工程的主要配置信息 -->
    <!-- id:起個名字 -->
    <!-- targetRuntime:設(shè)置生成的文件適用于那個 mybatis 版本 -->
    <context id="default" targetRuntime="MyBatis3">
        <!--optional,指在創(chuàng)建class時申屹,對注釋進(jìn)行控制-->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--jdbc的數(shù)據(jù)庫連接-->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/dbgirl?useUnicode=true&amp;characeterEncoding=utf-8&amp;serverTimezone=UTC"
                        userId="root"
                        password="123456">
        </jdbcConnection>
        <!--非必須蛮放,類型處理器缩抡,在數(shù)據(jù)庫類型和java類型之間的轉(zhuǎn)換控制-->
        <javaTypeResolver>
            <!-- 默認(rèn)情況下數(shù)據(jù)庫中的 decimal,bigInt 在 Java 對應(yīng)是 sql 下的 BigDecimal 類 -->
            <!-- 不是 double 和 long 類型 -->
            <!-- 使用常用的基本類型代替 sql 包下的引用類型 -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- targetPackage:生成的實(shí)體類所在的包 -->
        <!-- targetProject:生成的實(shí)體類所在的硬盤位置 -->
        <javaModelGenerator targetPackage="com.example.testmybatisgenerator.entity"
                            targetProject="src/main/java">
            <!-- 是否允許子包 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 是否對modal添加構(gòu)造函數(shù) -->
            <property name="constructorBased" value="true"/>
            <!-- 是否清理從數(shù)據(jù)庫中查詢出的字符串左右兩邊的空白字符 -->
            <property name="trimStrings" value="true"/>
            <!-- 建立modal對象是否不可改變 即生成的modal對象不會有setter方法包颁,只有構(gòu)造方法 -->
            <property name="immutable" value="false"/>
        </javaModelGenerator>
        <!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="src/main/resources">
            <!-- 針對數(shù)據(jù)庫的一個配置瞻想,是否把 schema 作為字包名 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.testmybatisgenerator.dao" targetProject="src/main/java">
            <!-- 針對 oracle 數(shù)據(jù)庫的一個配置,是否把 schema 作為字包名 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        <!-- tableName是數(shù)據(jù)庫中的表名娩嚼,domainObjectName是生成的JAVA模型名蘑险,后面的參數(shù)不用改,要生成更多的表就在下面繼續(xù)加table標(biāo)簽 -->
        <table tableName="girls" domainObjectName="Girls"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"></table>
        <!-- tableName是數(shù)據(jù)庫中的表名待锈,domainObjectName是生成的JAVA模型名漠其,后面的參數(shù)不用改,要生成更多的表就在下面繼續(xù)加table標(biāo)簽 -->
        <table tableName="add_user_case" domainObjectName="AddUserCase"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

七、generatorConfig.xml文件中要關(guān)注的點(diǎn)有如下:
1和屎、配置連接本地的數(shù)據(jù)庫拴驮、用戶名、密碼柴信、driverclass:


image.png

2套啤、生成實(shí)體類包的路徑:


image.png

3、生成mapper包的路徑:
image.png

4随常、生成dao包的路徑:
image.png

5潜沦、 tableName是數(shù)據(jù)庫中的表名,domainObjectName是生成的JAVA模型名绪氛,后面的參數(shù)不用改唆鸡,要生成更多的表就在下面繼續(xù)加table標(biāo)簽:


image.png

八、啟動執(zhí)行生成實(shí)體類:
1枣察、進(jìn)入run--Edits configurations


image.png

2争占、點(diǎn)擊+號,添加maven


image.png

填寫name:mybatis-generator 填寫命令:mybatis-generator:generate
填寫后點(diǎn)擊ok
image.png

3序目、能看到添加的maven啟動項(xiàng)臂痕,點(diǎn)擊三角符號,啟動項(xiàng)目


image.png

4猿涨、啟動后可能會報錯握童,我遇到的錯就是找不到j(luò)dbc driver,因?yàn)闆]找到mysql-connector-java-5.1.7-bin.jar叛赚,maven的依賴包是下載到本地了澡绩,只是路徑不對沒找到。
可以到file--settings中設(shè)置maven倉庫的地址俺附。
image.png

本地該路徑下倉庫中是有mysql-connector-java-5.1.7-bin.jar:
image.png

5英古、如果還不行可以通過在properties配置文件中配置jar包的地址
先在application.properties文件中配置
jdbc.driverLocation=D:\\apache-maven-3.5.3\\localRepository_tx\\mysql\\mysql-connector-java\\8.0.13\\mysql-connector-java-8.0.13.jar

image.png

因?yàn)槲冶镜赜袃蓚€maven倉庫,所以這里配置的路徑和上面看到的maven倉庫地址不同昙读,只要能找到j(luò)ar包的地址就行。
然后在generatorConfig.xml中再添加如下語句再次執(zhí)行就能成功了:


image.png
    <!--&lt;!&ndash;導(dǎo)入屬性配置&ndash;&gt;-->
    <properties resource="application.properties"></properties>

    <!--&lt;!&ndash;指定特定數(shù)據(jù)庫的jdbc驅(qū)動jar包的位置&ndash;&gt;-->
    <classPathEntry location="${jdbc.driverLocation}"/>

啟動成功后能看到在mapper膨桥、entity蛮浑、dao包下都生成了文件和類:


image.png

實(shí)體類中有私有成員屬性,有構(gòu)造方法只嚣,get和set方法:


image.png

接口類中定義了增刪改查的方法:


image.png

sqlmapper.xml中定義了增刪改查的sql語句:
image.png

添加依賴:

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

九沮稚、利用springboot的注解,操作數(shù)據(jù)庫
1册舞、首先先創(chuàng)建application.yml文件蕴掏,配置連接數(shù)據(jù)庫的信息,同時配置mybatis的信息


image.png
spring:
  application:
    name: mytest
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/dbgirl?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
    username: root
    password: 123456

mybatis:
  type-aliases-package: com.example.testmybatisgenerator.entiy
  mapper-locations:
    - mapper/*

在上面的application.properties文件中也可以寫:


image.png

2、創(chuàng)建service包盛杰,在包下創(chuàng)建GirlsMapperImp類并實(shí)現(xiàn)GirlsMapper接口以及實(shí)現(xiàn)該接口中的所有方法挽荡,同時給該類加個注解@Service,并注入GirlsMapper類即供,在實(shí)現(xiàn)的方法中可以調(diào)GirlMapper.xml中的方法


image.png

就是把GirlMapper.xml中的方法給注入了


image.png

GirlsMapperImp類:
package com.example.testmybatisgenerator.service;

import com.example.testmybatisgenerator.dao.GirlsMapper;
import com.example.testmybatisgenerator.entity.Girls;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class GirlsMapperImp implements GirlsMapper {
    @Autowired
    GirlsMapper girlsMapper;

    @Override
    public int deleteByPrimaryKey(Integer id) {
        return girlsMapper.deleteByPrimaryKey(id);
    }

    @Override
    public int insert(Girls record) {
        return girlsMapper.insert(record);
    }

    @Override
    public int insertSelective(Girls record) {
        return 0;
    }

    @Override
    public Girls selectByPrimaryKey(Integer id) {
        return null;
    }

    @Override
    public int updateByPrimaryKeySelective(Girls record) {
        return 0;
    }

    @Override
    public int updateByPrimaryKey(Girls record) {
        return 0;
    }
}

3定拟、在controller層注入GirlsMapperImp類,并調(diào)用這個類中實(shí)現(xiàn)的方法


image.png
package com.example.testmybatisgenerator.controller;

import com.example.testmybatisgenerator.service.GirlsMapperImp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {


    @Autowired
    GirlsMapperImp girlsMapperImp;

    @RequestMapping(value = "/getuserlist",method = RequestMethod.GET)
    public String getuserlist(){

        girlsMapperImp.deleteByPrimaryKey(109);
        return "hello springboot";
    }



}

查看數(shù)據(jù)庫中有id為109的數(shù)據(jù):


image.png

啟動springboot逗嫡,在瀏覽器中調(diào)用controller后再查看數(shù)據(jù)庫中id為109的數(shù)據(jù)被刪除了:


image.png

image.png

image.png

補(bǔ)充:
在springboot的啟動類中還需要加掃描的mapper包


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末青自,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驱证,更是在濱河造成了極大的恐慌延窜,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抹锄,死亡現(xiàn)場離奇詭異逆瑞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祈远,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門呆万,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人车份,你說我怎么就攤上這事谋减。” “怎么了扫沼?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵出爹,是天一觀的道長。 經(jīng)常有香客問我缎除,道長严就,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任器罐,我火速辦了婚禮梢为,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轰坊。我一直安慰自己铸董,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布肴沫。 她就那樣靜靜地躺著粟害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颤芬。 梳的紋絲不亂的頭發(fā)上悲幅,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天套鹅,我揣著相機(jī)與錄音,去河邊找鬼汰具。 笑死卓鹿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郁副。 我是一名探鬼主播减牺,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼存谎!你這毒婦竟也來了拔疚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤既荚,失蹤者是張志新(化名)和其女友劉穎稚失,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恰聘,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡句各,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晴叨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凿宾。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兼蕊,靈堂內(nèi)的尸體忽然破棺而出初厚,到底是詐尸還是另有隱情,我是刑警寧澤孙技,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布产禾,位于F島的核電站,受9級特大地震影響牵啦,放射性物質(zhì)發(fā)生泄漏亚情。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一哈雏、第九天 我趴在偏房一處隱蔽的房頂上張望楞件。 院中可真熱鬧,春花似錦裳瘪、人聲如沸履因。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至站故,卻和暖如春皆怕,著一層夾襖步出監(jiān)牢的瞬間毅舆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工愈腾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留憋活,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓虱黄,卻偏偏與公主長得像悦即,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子橱乱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348