<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>

          mapleLeaf代碼生成工具

          聯(lián)合創(chuàng)作 · 2023-09-28 03:01

          mapleLeaf程序員工具現(xiàn)包含 代碼生成工具和扒取工具 兩大模塊

          一、本項目主要特點:

          1. 項目運行不依賴數(shù)據(jù)庫,簡單方便。
          2. 代碼生成功能。
          3. 扒取工具現(xiàn)有扒取網(wǎng)頁,支持有用戶登錄的頁面扒取,通過設(shè)置cookie(可用瀏覽器工具查看cookie)??捎米髯约喉椖康哪0?,也可以靜態(tài)演示。

          二、代碼生成功能有哪些優(yōu)勢

          1. 主持多種主流數(shù)據(jù)庫:mysql,oracle,sqlserver,postgresql等;還能很容易的擴展需要支持的數(shù)據(jù)庫。
          2. 支持多種類型的持久層:mybatis,hibernate等other持久層。
          3. 支持表之間的復(fù)雜關(guān)聯(lián)關(guān)系,一對一,一對多,多對一,多對多,單雙向的關(guān)聯(lián)。
          4. 支持模塊化生成代碼,各模塊之間相互獨立,互不影響。
          5. 支持模板文件內(nèi)容自定義,可自由編輯新增模板,生成自己業(yè)務(wù)需要的代碼。模板使用了freemarker。
          6. 對視圖中的代碼生成,很友好;比如:字段表單類型分類,字段所在頁面位置標(biāo)識等。
          7. 不僅支持默認的java項目的dao,service,controller三層架構(gòu),而且支持強大的自定義,只要使用模板中現(xiàn)有的數(shù)據(jù)編輯模板,可以生成其他編程語言的文件。比如:頁面jsp,js等等。還可以自定義參數(shù),比如定義了參數(shù) author作者,date日期等。
          8. 操作簡單,只需要配置config.xml配置文件。

          三、項目部署及代碼生成演示:

          1. 如果用maven打成jar包運行時,需要在jar包所在目錄下加入config.xml配置文件與template模板文件。(推薦)
          2. 用maven打成war包運行,則不需要這些,直接啟動服務(wù)即可。

          以mysql數(shù)據(jù)庫為例,分別生成mybatis,hibernate。

          表結(jié)構(gòu)

          CREATE TABLE
              sys_user
              (
                  user_id INT NOT NULL AUTO_INCREMENT COMMENT '用戶ID',
                  dept_id INT COMMENT '部門ID',
                  user_info_id INT COMMENT '用戶個人信息ID',
                  login_name VARCHAR(30) NOT NULL COMMENT '登錄賬號',
                  password VARCHAR(50) COMMENT '密碼',
                  user_name VARCHAR(30) NOT NULL COMMENT '用戶昵稱',
                  email VARCHAR(50) COMMENT '用戶郵箱',
                  phonenumber VARCHAR(11) COMMENT '手機號碼',
                  sex CHAR(1) DEFAULT '0' COMMENT '用戶性別;radio;0:男,1:女,2:未知',
                  status CHAR(1) DEFAULT '0' COMMENT '賬號狀態(tài);select;0:正常 ,1:停用',
                  remark VARCHAR(500) COMMENT '備注',
                  PRIMARY KEY (user_id)
              )
              ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表';
          CREATE TABLE
              sys_dept
              (
                  dept_id INT NOT NULL AUTO_INCREMENT COMMENT '部門id',
                  parent_id INT DEFAULT '0' COMMENT '父部門id',
                  dept_name VARCHAR(30) COMMENT '部門名稱',
                  leader VARCHAR(20) COMMENT '負責(zé)人',
                  phone VARCHAR(11) COMMENT '聯(lián)系電話',
                  status CHAR(1) DEFAULT '0' COMMENT '部門狀態(tài);select;0:正常 ,1:停用',
                  PRIMARY KEY (dept_id)
              )
              ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部門表';
          CREATE TABLE
              sys_user_info
              (
                  user_info_id INT NOT NULL AUTO_INCREMENT COMMENT '用戶個人信息ID',
                  real_name VARCHAR(30) NOT NULL COMMENT '真實姓名',
                  address VARCHAR(100) COMMENT '住址',
                  height DOUBLE COMMENT '身高',
                  birthday TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON
              UPDATE
                  CURRENT_TIMESTAMP COMMENT '出生日期',
                  PRIMARY KEY (user_info_id)
              )
              ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶個人信息表';
          CREATE TABLE
              sys_role
              (
                  role_id INT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
                  role_name VARCHAR(30) NOT NULL COMMENT '角色名稱',
                  status CHAR(1) NOT NULL COMMENT '角色狀態(tài);radio;0:正常 ,1:停用',
                  remark VARCHAR(500) COMMENT '備注',
                  PRIMARY KEY (role_id)
              )
              ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色信息表';
          CREATE TABLE
              sys_user_role
              (
                  user_id INT NOT NULL COMMENT '用戶ID',
                  role_id INT NOT NULL COMMENT '角色ID',
                  PRIMARY KEY (user_id, role_id)
              )
              ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶和角色關(guān)聯(lián)表';
          
          • 用戶表 1-->1 用戶個人信息表;用戶表 n-->1 部門表;
          • 用戶表 n-->n 角色表,用戶和角色關(guān)聯(lián)表為中間表;
          • COMMET約定格式(不區(qū)分中英逗號,分號,推薦中文;自動去除空格): 字段文本;表單類型;val1:text1,val2:text2
          • 程序會自動加載,這些屬性。
          • 表單類型現(xiàn)支持text,textarea,date,select,checkbox,radio,hidden,file。

          config.xml配置

          <?xml version="1.0" encoding="UTF-8"?>
          <configure>
              <global>
                  <!--生成代碼路徑 ,默認項目所在目錄-->
                  <property name="baseDir" value="f:\\code" />
                  <!--基礎(chǔ)包名,默認mapleLeaf.code-->
                  <property name="basePackage" value="com.test" />
                  <!-- 實體類名是否去掉表名前綴 ,默認false-->
                  <property name="deleteTabPrefix" value="true" />
                  <!-- 全局表名前綴,多個逗號分隔 ,默認""-->
                  <property name="baseTabPrefix" value="sys_" />
                  <!-- 表字段是否下劃線轉(zhuǎn)駝峰命名 ,默認false-->
                  <property name="columnCamel" value="true" />
                  <!-- 持久層框架(mybatis,hibernate,other),默認"mybatis" -->
                  <property name="persistence" value="hibernate" />
                  <!-- 一些公共類,工具類,父類等原樣輸出,不必需(包名=模板文件名(也是類名),多個逗號隔開) -->
                  <!-- 這里配置了分頁類,mybatis分頁攔截器, mybatis通用配置-->
                  <!--  
                  <common>common=Page,common=PageInterceptor,resource=Xml_mybatis</common>
                  -->
              </global>
          
              <!-- 數(shù)據(jù)庫配置 -->
              <db>
                  <!-- 數(shù)據(jù)庫類型(mysql,oracle,sqlserver,postgresql,informix) -->
                  <dbType>mysql</dbType>
                  <!-- 數(shù)據(jù)庫名 -->
                  <dbName>demo2</dbName>
                  <user>root</user>
                  <pwd>q123</pwd>
                  <driver>com.mysql.jdbc.Driver</driver>
                  <url><![CDATA[jdbc:mysql://localhost:3306/demo2?useUnicode=true&characterEncoding=UTF-8]]></url>
              </db>
          
              <!-- 模塊化配置,可以配置多個module,
                      各模塊相互獨立,name屬性為模塊名 -->
              <module name="test">
                  <!-- 
                      package標(biāo)簽 主要支持大多數(shù)  dao,service,controller 三層結(jié)構(gòu)
                      包名配置,如果為空或沒配置,則該包對應(yīng)的類不會生成代碼 
                  -->
                  <package>
                      <property name="entityPkg" value="entity"/>
                      <property name="daoPkg" value="dao"/>
                      <property name="servicePkg" value="service"/>
                      <property name="controllerPkg" value="controller"/>
                      <property name="mapperPkg" value="mapper"/>
                  </package>
                  <!--
                      customArea自定義區(qū)域 ,只要提供模板,任意生成代碼,
                      可以說 不僅僅生成java語言
                  -->
                  <customArea>
                      <!-- 自定義生成,可以配置多組標(biāo)簽,不限于java語言,屬性customPkg包名,屬性suffix 文件后綴;
                          標(biāo)簽內(nèi)容為模板文件(不需要后綴),多個逗號分隔-->
                      <codeFile customPkg="page" suffix="jsp">Jsp_list,Jsp_add,Jsp_view</codeFile>
                      <!-- 自定義參數(shù)設(shè)置 ,模板中可以通過${param['author']!}獲取參數(shù)值 -->
                      <param key="author" value="mapleLeaf"></param>
                  </customArea>
          
                  <!-- table配置表,屬性tabName表名,
                        exclude排除指定模板代碼生成,多個逗號分隔(dao,service,controller,entity,custom)
                      ,prefix表前綴,有全局配置,感覺沒什么用了-->
                  <table tabName="sys_user" prefix="">
                      <!-- 
                      ref標(biāo)簽(單向)關(guān)聯(lián)表,如果需要雙向關(guān)聯(lián)  兩個table都需配置對應(yīng)對方的ref
                      ref所對應(yīng)的 tabName,必須配置table
                      ref標(biāo)簽內(nèi)容為 主表字段=關(guān)聯(lián)表字段,默認可以多組,逗號分隔(推薦單組字段)(多對多時,則為 主表字段=中間表字段)
                      多對多時:需配置midTabName和midRefCol屬性
                      midTabName中間表 不用配置table;midRefCol屬性為(中間表字段=關(guān)聯(lián)表字段)
                      多對一時:需配置forKey 主表的關(guān)聯(lián)字段(即外鍵)
                      一對一時:關(guān)聯(lián)字段(即外鍵)是否在 主表中,如果是,則配置forKey
                      -->
                      <ref tabName="sys_role" type="ManyToMany" midTabName="sys_user_role" midRefCol="role_id=role_id">
                          user_id=user_id
                      </ref>
                      <ref tabName="sys_dept" type="ManyToOne" forKey="dept_id">dept_id=dept_id</ref>
                      <ref tabName="sys_user_info" type="OneToOne" forKey="user_info_id">
                      user_info_id=user_info_id
                      </ref>
                      <!-- columnGroup字段集合標(biāo)簽,對字段屬性設(shè)置
                          exclude:排除字段,多個字段逗號分隔,以下屬性一樣。
                          searchPos:頁面查詢條件;listPos:頁面查詢結(jié)果列表;inputPos:頁面表單輸入
                       -->
                      <columnGroup searchPos="login_name,status" 
                          inputPos="user_id,login_name,email,phonenumber,sex,status">
                          <!-- 
                              column字段標(biāo)簽,可自定義字段屬性。
                              colName:字段名;tagType:表單類型,默認text;labelName:字段文本
                              column標(biāo)簽內(nèi)容:字段值
                           -->
                          <column colName="sex" tagType="radio" labelName="性別">
                              0=男,1=女</column>
                          <column colName="remark" tagType="textarea" />
                      </columnGroup>
                  </table>
          
                  <table tabName="sys_role">
                      <ref tabName="sys_user" type="ManyToMany" midTabName="sys_user_role" midRefCol="user_id=user_id">
                          role_id=role_id
                      </ref>
                  </table>
          
                  <table tabName="sys_dept" exclude="custom">
                      <ref tabName="sys_user" type="OneToMany">dept_id=dept_id</ref>
                  </table>
          
                  <table tabName="sys_user_info"></table>
              </module>
          </configure>
          

          生成的部分代碼展示

          • hibernate生成的實體類(SysUser部分代碼)

          • mybatis生成的xml配置(SysUserMapper.xml部分)

          • 頁面生成的代碼(簡單處理了)

          四、模板代碼片段:

          (有自定義宏標(biāo)簽和函數(shù),temlate/lib/mf.ftl)

          獲取表字段信息

          <#list columns as col>
               ${col.propName}  //實體類屬性名
               ${col.propType}  //實體類屬性java類型
               ${col.colName}  //表字段名
               ${col.pk}  //是否主鍵
               ...
          </#list>
          //也可以使用 temlate/lib/mf.ftl中的自定義標(biāo)簽<@list>,對null進行了初始化
          <@mf.list columns;col>
              ${col.propName}   //實體類屬性名
          </@mf.list>
          

          獲取所有關(guān)聯(lián)表信息

          <@mf.list refTables;reftb>
              ${reftb.entName}  //實體類
              ${reftb.refType}  //關(guān)聯(lián)關(guān)系 如OneToOne,OneToMany等
              ${reftb.lowEntName} //實體類名首字母小寫,可用作變量名
              ...        
          </@mf.list>
          

          獲取唯一索引(組合索引)或主鍵(組合主鍵)

          // 如果表存在主鍵(組合主鍵),則uniIdxCols存主鍵字段
          // 如果沒有主鍵,查詢唯一索引,取其中一組
          // 如果主鍵,唯一索引都沒有,則為空集合
          <@mf.list uniIdxCols;col>
              ${col.colName}  //表字段名
              ${col.propName}  //字段對應(yīng)屬性
                 ...
          </@mf.list>
          

          扒取登陸用戶頁面時,通過瀏覽器工具獲取cookies,把HTTP打鉤的name,value填進cookie文本域就行:

           

          瀏覽 17
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <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>
                  日韩高清无码网站 | 亚洲精品卡一卡二 | 欧美靠逼视频 | 亚洲中文无码字幕 | 久久欠久久久久久九秃大奖励 |