最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis逆向工程實(shí)現(xiàn)連接MySQL數(shù)據(jù)庫

 更新時(shí)間:2023年06月12日 09:30:40   作者:fckey  
本文主要介紹了Mybatis逆向工程實(shí)現(xiàn)連接MySQL數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在開發(fā)中,一般我們的開發(fā)流程是:

  • 數(shù)據(jù)庫:設(shè)計(jì)數(shù)據(jù)表
  • 實(shí)體類:建立與數(shù)據(jù)表對(duì)應(yīng)的pojo實(shí)體類
  • 持久層:設(shè)計(jì)持久層,Mapper接口和Mypper.xml sql映射文件
  • 服務(wù)層:添加Service接口和ServiceImpl接口實(shí)現(xiàn)類
  • 邏輯控制層:設(shè)計(jì)各頁面/功能的Cotroller

但是,我們想的是,很多情況下,實(shí)體類都是一些和SQL表中重復(fù)的字段,能不能有一種方法可以自動(dòng)生成對(duì)應(yīng)的實(shí)體類?如果表少,手敲沒有啥,如果表太多的話,難免會(huì)很麻煩,所以MyBatis官方提供了一個(gè)逆向工程,可以針對(duì)單表自動(dòng)生成MyBatis執(zhí)行所需要的代碼(包括mapper.xml,mapper.java,pojo)。一般在開發(fā)中,常用的逆向工程方式是通過數(shù)據(jù)庫的表生成代碼。

在引入逆向工程之后,我們的開發(fā)流程會(huì)變成:

  • 加入Mybatis逆向工程的依賴
  • 設(shè)計(jì)數(shù)據(jù)表
  • 配置逆向工程配置信息
  • 運(yùn)行逆向工程
  • 得到【pojo類、dao接口、sql映射文件】

下面,我們來開始使用,對(duì)于逆向工程,幫我們自動(dòng)生成的Java代碼,大大加快了我們的開發(fā)效率。但是,生成的文件太過冗余,不必要的代碼過多。尤其是sql映射文件,里面的配置內(nèi)容太多,對(duì)于dao層,提供的方法比較有限,需要自行擴(kuò)展。后期,一般使用MyBatisPlus完成開發(fā)功能。

一、使用步驟

1、建立新項(xiàng)目

開始,我們建立一個(gè)空項(xiàng)目,模擬一下初始的開發(fā)流程

對(duì)于配置文件可以在官方網(wǎng)站中找到:http://mybatis.org/generator/configreference/xmlconfig.html,很多時(shí)候要學(xué)會(huì)看官網(wǎng) 。

2、引入pom依賴

<!--mysql-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- mybatis依賴 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <!-- mybatis逆向工程依賴 -->
    <dependency>
      <groupId>org.mybatis.generator</groupId>
      <artifactId>mybatis-generator-core</artifactId>
      <version>1.3.7</version>
    </dependency>

3、創(chuàng)建逆向工程的配置文件 generatorConfig.xml

注意的是:配置文件中的各個(gè)標(biāo)簽順序是有要求的,和mybatis-config.xml配置文件一樣,順序不對(duì)是會(huì)報(bào)錯(cuò)的。

<?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>
   <context id="DB2Tables" targetRuntime="MyBatis3">
     <!-- 去除生成的注解 -->
     <commentGenerator>
        <property name="suppressAllComments" value="true"/>
     </commentGenerator>
     <!-- 數(shù)據(jù)庫連接配置 -->
     <!-- 注意xml中不支持&,用&amp;代替 -->
     <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" 
     connectionURL="jdbc:mysql://rm-m5e130nm7h37n6v982o.mysql.rds.aliyuncs.com:3306/demo?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8"
     userId="xxxxx" password="xxxxxx"></jdbcConnection>
     <!-- 處理NUMERIC和DECIMAL類型的策略 -->
     <javaTypeResolver>
         <property name="forceBigDecimals" value="false" />
     </javaTypeResolver>
     <!-- 配置pojo生成的位置 -->
     <javaModelGenerator targetPackage="com.ycz.pojo"  targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />
     </javaModelGenerator>
     <!-- 配置sql映射文件的生成位置 -->
     <sqlMapGenerator targetPackage="com.ycz.mapper" targetProject="src/main/resources">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />        
     </sqlMapGenerator>
     <!-- 配置dao接口的生成位置 -->
     <javaClientGenerator type="XMLMAPPER" targetPackage="com.ycz.dao" 
     targetProject="src/main/java">
        <property name="enableSubPackages" value="true" />
        <property name="trimStrings" value="true" />     
     </javaClientGenerator>
     <!-- 指定逆向依據(jù)的數(shù)據(jù)表 -->
     <table tableName="person" domainObjectName="Person"></table>
   </context>
 </generatorConfiguration>

4、運(yùn)行逆行工程,生成代碼文件

public class GeneratorTest {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/config/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成成功!");
    }
}

二、案例展示

我們按照上述的開發(fā)流程步驟來進(jìn)行:

1、建立數(shù)據(jù)表

根據(jù)自己的業(yè)務(wù),首先第一步進(jìn)行的就是先創(chuàng)建對(duì)應(yīng)符合業(yè)務(wù)的數(shù)據(jù)表。這里我使用三張表:

三張表的字段信息如下:

這里不需要直接用我的三張表,可以自己建立自己的表來進(jìn)行測(cè)試,這邊只是為了后文博文的完整性。

2、改寫對(duì)應(yīng)的配置文件內(nèi)容

1、數(shù)據(jù)庫連接配置,指定自己的數(shù)據(jù)庫

需要對(duì)generatorConfig.xml文件中的內(nèi)容修改為符合自己項(xiàng)目的配置。

  <!-- 注意xml中不支持&,用&amp;代替 -->
        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=GMT%2B8"
                        userId="root" password="admin123">
            <!--在逆向生成時(shí),除了會(huì)生成 User 類,還會(huì)生成一個(gè)繼承 User 類的UserWithBLOBs 類。
                加入此注解避免生成類的UserWithBLOBs-->
            <property name="nullCatalogMeansCurrent" value="true" />
        </jdbcConnection>

jdbcConnection設(shè)置連接信息,配置用戶名和密碼,驅(qū)動(dòng)和數(shù)據(jù)庫的url等等信息。

2、配置pojo生成的位置

  <!-- 配置pojo生成的位置 -->
        <javaModelGenerator targetPackage="com.fckey.pojo"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

主要配置的是targetPackage項(xiàng)目,指定pojo生成的位置

3、配置sql映射文件的生成位置

  <!-- 配置sql映射文件的生成位置 -->
        <sqlMapGenerator targetPackage="com.fckey.mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </sqlMapGenerator>

4、配置mapper接口的生成位置

 <!-- 配置dao接口的生成位置 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.fckey.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaClientGenerator>

5、對(duì)需要生成對(duì)應(yīng)數(shù)據(jù)表進(jìn)行指定

 <!-- 指定逆向依據(jù)的數(shù)據(jù)表 -->
        <table tableName="t_dept" domainObjectName="Dept"></table>
        <table tableName="t_emp" domainObjectName="Emp"></table>
        <table tableName="t_user" domainObjectName="User"></table>

3、運(yùn)行生成代碼工具類

在編寫好了對(duì)應(yīng)的配置,還需要一個(gè)能夠運(yùn)行配置的方法。如下所示:

public class GeneratorTest {
    public static void main(String[] args) throws Exception {
        List<String> warnings = new ArrayList<String>();
        boolean overwrite = true;
        File configFile = new File("src/main/resources/config/generatorConfig.xml");
        ConfigurationParser cp = new ConfigurationParser(warnings);
        Configuration config = cp.parseConfiguration(configFile);
        DefaultShellCallback callback = new DefaultShellCallback(overwrite);
        MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
        myBatisGenerator.generate(null);
        System.out.println("生成成功!");
    }
}

4、運(yùn)行結(jié)果

直接運(yùn)行GeneratorTest,查看最終的結(jié)果

生成的效果還是不錯(cuò)的,對(duì)于xml配置文件,里面寫的內(nèi)容也是非常的專業(yè)。

三、對(duì)生成的逆向工程代碼進(jìn)行測(cè)試

對(duì)于生成的逆向工程代碼,我們注意到pojo包名下還生成了xxxExample方法,example用于添加查詢條件,相當(dāng)where后面的部分。
對(duì)于Example中方法的說明。

在進(jìn)行測(cè)試之前,需要注意的是,我們還需要導(dǎo)入全局配置文件mybatis-config.xml來完成測(cè)試分析。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <typeAliases>
        <!--將當(dāng)前包下的所有類都配置別名-->
        <package name="com.fckey.mybatis.entity"/>
    </typeAliases>
    <!--設(shè)置連接數(shù)據(jù)庫的環(huán)境-->
    <environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url"
                      value="jdbc:mysql://localhost:3306/mybatis_demo"/>
            <!--注意:如果在建sql表單的時(shí)候選了字符集(如utf8),
            這里的value要改成:value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"-->
            <property name="username" value="root"/>
            <property name="password" value="admin123"/>
        </dataSource>
    </environment>
</environments>
    <!--引入映射文件-->
    <mappers>
        <package name="com.fckey.mapper"/>
    </mappers>
</configuration>

書寫測(cè)試類的時(shí)候,發(fā)現(xiàn)多了很多條件的查詢。

測(cè)試類編寫:

   private static SqlSession getSqlSession() throws IOException {
    /*
       如果是想自動(dòng)的進(jìn)行提交,而不需要手動(dòng)的提交事務(wù),可以在sqlSession()中傳入true,即可開啟自動(dòng)提交功能
     */
        // 加載核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        // 獲取sqlsessionfactorybuilder對(duì)象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 獲取sqlsessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        // 獲取sqlsession
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        return sqlSession;
    }
    @org.junit.Test
    public void test() throws IOException {
        SqlSession sqlSession = getSqlSession();
        EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
        List<Emp> emps = mapper.selectByExample(null);
        System.out.println(emps);
    }

最后得到所有的對(duì)象信息:

到此這篇關(guān)于Mybatis逆向工程實(shí)現(xiàn)連接MySQL數(shù)據(jù)庫的文章就介紹到這了,更多相關(guān)Mybatis連接MySQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Spring DeferredResult異步操作使用場(chǎng)景

    詳解Spring DeferredResult異步操作使用場(chǎng)景

    本文主要介紹了Spring DeferredResult異步操作使用場(chǎng)景,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析

    微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析

    這篇文章主要為大家介紹了微服務(wù)鏈路追蹤Spring Cloud Sleuth整合Zipkin解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Java打印流原理及實(shí)例詳解

    Java打印流原理及實(shí)例詳解

    這篇文章主要介紹了Java打印流原理及實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決

    SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決

    這篇文章主要介紹了SpringBoot接口路徑重復(fù),啟動(dòng)服務(wù)器失敗的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 通過@Resource注解實(shí)現(xiàn)屬性裝配代碼詳解

    通過@Resource注解實(shí)現(xiàn)屬性裝配代碼詳解

    這篇文章主要介紹了通過@Resource注解實(shí)現(xiàn)屬性裝配代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • mybatis使用xml進(jìn)行增刪改查代碼解析

    mybatis使用xml進(jìn)行增刪改查代碼解析

    這篇文章主要介紹了mybatis使用xml進(jìn)行增刪改查代碼解析,分享了相關(guān)配置和代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • IDEA利用jclasslib 修改class文件的實(shí)現(xiàn)

    IDEA利用jclasslib 修改class文件的實(shí)現(xiàn)

    這篇文章主要介紹了IDEA利用jclasslib 修改class文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Java實(shí)現(xiàn)文件上傳與文件下載的示例代碼

    Java實(shí)現(xiàn)文件上傳與文件下載的示例代碼

    在開發(fā)中項(xiàng)目難免會(huì)遇到文件上傳和下載的情況,這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)文件上傳與文件下載的示例代碼,希望對(duì)大家有所幫助
    2023-07-07
  • 在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置

    在Spring Boot項(xiàng)目中引入本地JAR包的步驟和配置

    本文探討了在Spring Boot項(xiàng)目中引入本地JAR包的步驟和必要的配置,通過使用Maven的system作用域,開發(fā)者可以將自定義的本地庫或功能集成到Spring Boot應(yīng)用程序中,,需要的朋友可以參考下
    2023-10-10
  • ConcurrentMap.putIfAbsent(key,value)用法實(shí)例

    ConcurrentMap.putIfAbsent(key,value)用法實(shí)例

    這篇文章主要介紹了ConcurrentMap.putIfAbsent(key,value)用法實(shí)例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

长沙县| 江城| 英德市| 板桥市| 石景山区| 化隆| 南涧| 延边| 南陵县| 龙泉市| 克拉玛依市| 诸暨市| 盐亭县| 仪征市| 西和县| 墨江| 上思县| 成武县| 夏河县| 阳泉市| 墨江| 尤溪县| 承德县| 台中县| 连平县| 新平| 兴仁县| 驻马店市| 彰武县| 夹江县| 毕节市| 星座| 华容县| 穆棱市| 彩票| 浙江省| 漯河市| 兖州市| 孝义市| 安国市| 大化|