<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          酸爽!原來IDEA還可以這么玩 MyBatis,讓編碼速度飛起!

          共 12922字,需瀏覽 26分鐘

           ·

          2021-06-14 12:38

          關(guān)注我們,設(shè)為星標(biāo),每天7:30不見不散,架構(gòu)路上與您共享 

          回復(fù)"架構(gòu)師"獲取資源



          • 1. 搭建 MyBatis Generator 插件環(huán)境
            • a. 添加插件依賴 pom.xml
            • b. 配置文件 generatorConfig.xml
            • c. 數(shù)據(jù)庫配置文件 jdbc.properties
            • d. 配置插件啟動(dòng)項(xiàng)
          • 2.項(xiàng)目實(shí)戰(zhàn)
            • a. 比如在一個(gè)項(xiàng)目 我們要?jiǎng)h除某個(gè)小組下某個(gè)用戶的信息
            • b. 根據(jù)小組ID(非主鍵 更新小組信息)
            • c. 各種查詢

          IDEA 逆向 MyBatis 工程時(shí),不像支持 Hibernate 那樣有自帶插件,需要集成第三方的 MyBatis Generator。

          MyBatis Generator的詳細(xì)介紹 http://mybatis.github.io/generator/index.html

          本篇博客圖解 MyBatis Generator 的使用過程,并結(jié)合實(shí)戰(zhàn)說明逆向工程的使用方式。

          1. 搭建 MyBatis Generator 插件環(huán)境

          a. 添加插件依賴 pom.xml

                    <!--mybatis 逆向生成插件-->
                      <plugin>
                          <groupId>org.mybatis.generator</groupId>
                          <artifactId>mybatis-generator-maven-plugin</artifactId>
                          <version>1.3.2</version>
                          <configuration>
                              <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                              <verbose>true</verbose>
                              <overwrite>true</overwrite>
                          </configuration>
                          <executions>
                              <execution>
                                  <id>Generate MyBatis Artifacts</id>
                              </execution>
                          </executions>
                          <dependencies>
                              <dependency>
                                  <groupId>org.mybatis.generator</groupId>
                                  <artifactId>mybatis-generator-core</artifactId>
                                  <version>1.3.2</version>
                              </dependency>
                          </dependencies>
                      </plugin>

          b. 配置文件 generatorConfig.xml

          <?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>
              <properties resource="jdbc.properties"/>
              <classPathEntry location="${jdbc_driverLocation}"/> <!--指定特定數(shù)據(jù)庫的jdbc驅(qū)動(dòng)jar包的位置-->

              <context id="default" targetRuntime="MyBatis3">
                  <!-- optional,旨在創(chuàng)建class時(shí),對(duì)注釋進(jìn)行控制 -->
                  <commentGenerator>
                      <property name="suppressDate" value="true"/>
                      <property name="suppressAllComments" value="true"/>
                  </commentGenerator>

                  <!--jdbc的數(shù)據(jù)庫連接 -->
                  <jdbcConnection
                          driverClass="${jdbc_driverClass}"
                          connectionURL="${jdbc_url}"
                          userId="${jdbc_user}"
                          password="${jdbc_pwd}">

                  </jdbcConnection>

                  <!-- 非必需,類型處理器,在數(shù)據(jù)庫類型和java類型之間的轉(zhuǎn)換控制-->
                  <javaTypeResolver><property name="forceBigDecimals" value="false"/></javaTypeResolver>

                  <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
                      targetPackage     指定生成的model生成所在的包名
                      targetProject     指定在該項(xiàng)目下所在的路徑
                  -->

                  <javaModelGenerator targetPackage="com.rambo.sdm.dao.pojo" targetProject="src/main/java">
                      <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
                      <property name="enableSubPackages" value="false"/>
                      <!-- 是否對(duì)model添加 構(gòu)造函數(shù) -->
                      <property name="constructorBased" value="true"/>
                      <!-- 是否對(duì)類CHAR類型的列的數(shù)據(jù)進(jìn)行trim操作 -->
                      <property name="trimStrings" value="true"/>
                      <!-- 建立的Model對(duì)象是否 不可改變  即生成的Model對(duì)象不會(huì)有 setter方法,只有構(gòu)造方法 -->
                      <property name="immutable" value="false"/>
                  </javaModelGenerator>

                  <!--Mapper映射文件生成所在的目錄 為每一個(gè)數(shù)據(jù)庫的表生成對(duì)應(yīng)的SqlMap文件 -->
                  <sqlMapGenerator targetPackage="com.rambo.sdm.dao.mapper" targetProject="src/main/java">
                      <property name="enableSubPackages" value="false"/>
                  </sqlMapGenerator>

                  <!-- 客戶端代碼,生成易于使用的針對(duì)Model對(duì)象和XML配置文件 的代碼
                          type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper對(duì)象
                          type="MIXEDMAPPER",生成基于注解的Java Model 和相應(yīng)的Mapper對(duì)象
                          type="XMLMAPPER",生成SQLMap XML文件和獨(dú)立的Mapper接口
                  -->

                  <javaClientGenerator targetPackage="com.rambo.sdm.dao.inter" targetProject="src/main/java" type="XMLMAPPER">
                      <property name="enableSubPackages" value="true"/>
                  </javaClientGenerator>

                  <table tableName="user" domainObjectName="UserPO">
                      <generatedKey column="uuid" sqlStatement="SELECT REPLACE(UUID(),'-','') UUID FROM DUAL"/>
                  </table>
              </context>
          </generatorConfiguration>

          c. 數(shù)據(jù)庫配置文件 jdbc.properties

          jdbc_driverLocation=D:\\Program Files\\Repository\\mysql\\mysql-connector-java\\5.1.38\\mysql-connector-java-5.1.38.jar
          jdbc_driverClass=com.mysql.jdbc.Driver
          jdbc_url=jdbc:mysql://localhost:3306/db_test?useUnicode=true&amp;characterEncoding=utf-8
          jdbc_user=root
          jdbc_pwd=123456
          validationQuery = select 1

          d. 配置插件啟動(dòng)項(xiàng)

          2.項(xiàng)目實(shí)戰(zhàn)

          User類就是普通的實(shí)體類,定義了數(shù)據(jù)庫對(duì)應(yīng)的字段,以及set/get方法

          Mybatis 引入了 Example 類,用來封裝數(shù)據(jù)庫查詢條件。

          a. 比如在一個(gè)項(xiàng)目 我們要?jiǎng)h除某個(gè)小組下某個(gè)用戶的信息

              public int deleteUserApplyInfo(long user_id,long team_id){
                  StudyTeamUserApplyInfoExample ue = new StudyTeamUserApplyInfoExample();
                  ue.createCriteria().andUserIdEqualTo(new BigDecimal(user_id)).andTeamIdEqualTo(new BigDecimal(team_id));
                  return studyTeamUserApplyInfoDAO.deleteByExample(ue);
              }

          b. 根據(jù)小組ID(非主鍵 更新小組信息)

             public int updateStudyTeamInfo(StudyTeamInfo st){
                  StudyTeamInfoExample ste = new StudyTeamInfoExample();
                  ste.createCriteria().andTeamIdEqualTo(st.getTeamId());
                  return studyTeamInfoDAO.updateByExampleSelective(st,ste);
              }

          c. 各種查詢

          (1)模糊查詢并且排序

          public List<StudyTeamInfo> getStudyTeamInfoByName(String team_name){
                  StudyTeamInfoExample se = new StudyTeamInfoExample();
                  se.createCriteria().andTeamNameLike("%"+team_name+"%").andEnableEqualTo((short)1);
                  se.setOrderByClause("team_score desc");
                  List<StudyTeamInfo> ls = studyTeamInfoDAO.selectByExample(se);
                  if(ls!=null&&ls.size()>0){
                      return ls;
                  }
                  return null;
              }

          (2)大于等于某個(gè)分?jǐn)?shù) 并且小于某個(gè)分?jǐn)?shù)的查詢

          public StudyTeamLevel getStudyTeamLevel(long score){
                  StudyTeamLevelExample le = new StudyTeamLevelExample();
                  le.createCriteria().andNeedScoreLessThanOrEqualTo(score).andUpScoreGreaterThan(score);
                  List<StudyTeamLevel> ls = studyTeamLevelDAO.selectByExample(le);
                  if(ls!=null&&ls.size()>0){
                      return ls.get(0);


          文章來源:cnblogs.com/java-class/p/6237564.html



          到此文章就結(jié)束了。如果今天的文章對(duì)你在進(jìn)階架構(gòu)師的路上有新的啟發(fā)和進(jìn)步,歡迎轉(zhuǎn)發(fā)給更多人。歡迎加入架構(gòu)師社區(qū)技術(shù)交流群,眾多大咖帶你進(jìn)階架構(gòu)師,在后臺(tái)回復(fù)“加群”即可入群。







          這些年小編給你分享過的干貨

          1.第七期打卡送書5本(5月1日-6月1日)

          2.ERP系統(tǒng),自帶進(jìn)銷存+財(cái)務(wù)+生產(chǎn)功能,拿來即用

          3.帶工作流的SpringBoot后臺(tái)管理項(xiàng)目快速開發(fā)解決方案
          4.最好的OA系統(tǒng),拿來即用,非常方便

          5.SpringBoot+Vue完整的外賣系統(tǒng),手機(jī)端和后臺(tái)管理,附源碼!


          轉(zhuǎn)發(fā)在看就是最大的支持??


          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人网站在线精品国产免费 | 欧美日韩一区二区三区四区 | 影音先锋无码一区二区 | 亚洲大胆人体视频 | 国产欧美精品 |