电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Mybatis Generator逆向工程的使用詳細教程

瀏覽:104日期:2023-10-23 17:54:29

一、MyBatis Generator簡介

MyBatis Generator(MBG)是MyBatis和iBATIS的代碼生成器。它將為所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代碼。它將審查數據庫表(或許多表),并將生成可用于訪問表的構件。這減少了設置對象和配置文件以與數據庫表交互的初始麻煩。MBG尋求對簡單CRUD(創建,檢索,更新,刪除)的大部分數據庫操作產生重大影響。您仍然需要為連接查詢或存儲過程手動編寫SQL和對象代碼。MyBatis Generator將生成:

與表結構匹配的Java POJO。這可能包括:

一個匹配表的主鍵的類(如果有主鍵) 一個匹配表的非主鍵字段的類(BLOB字段除外) 包含表的BLOB字段的類(如果表具有BLOB字段) 用于啟用動態選擇,更新和刪除的類

這些類之間存在適當的繼承關系。請注意,生成器可以配置為生成不同類型的POJO層次結構 - 例如,如果您愿意,可以選擇為每個表生成單個域對象。

MyBatis/iBATIS兼容的SQL Map XML文件。MBG為配置中的每個表上的簡單CRUD函數生成SQL。生成的SQL語句包括:

insert 插入 update by primary key 按主鍵更新 update by example (using a dynamic where clause) 通過條件更新(使用動態where子句) delete by primary key 按主鍵刪除 delete by example (using a dynamic where clause) 按條件刪除(使用動態where子句) select by primary key 按主鍵查詢 select by example (using a dynamic where clause) 按條件查詢(使用動態where子句) count by example 按條件查詢記錄總數

根據表結構的不同,這些語句有不同的變體(例如,如果表沒有主鍵,則MBG不會通過主鍵功能生成更新)。

適當使用上述對象的Java客戶端類。Java客戶端類的生成是可選的。MBG將為MyBatis 3.x生成以下類型的Java客戶端:

適用于MyBatis 3.x映射器基礎結構的映射器接口

MBG將為iBATIS 2.x生成以下類型的Java客戶端:

符合Spring框架的DAO 僅使用iBATIS SQL映射API的DAO。這些DAO可以生成兩種:通過構造函數或setter注入提供SqlMapClient。 符合iBATIS DAO框架的DAO(iBATIS的可選部分,現在不推薦使用此框架,我們建議您使用Spring框架)

MyBatis生成器設計為在迭代開發環境中運行良好,并且可以作為Ant任務或Maven插件包含在連續構建環境中。迭代運行MBG時需要注意的重要事項包括:

如果存在與新生成的XML文件同名的現有文件,MBG將自動合并XML文件。MBG不會覆蓋您對其生成的XML文件所做的任何自定義更改。您可以反復運行它,而不必擔心會丟失對XML的自定義更改。MBG將替換先前運行中生成的任何XML元素。

MBG不會合并Java文件,它可以覆蓋現有文件或使用不同的唯一名稱保存新生成的文件。如果對生成的Java文件進行更改并以迭代方式運行MBG,則必須手動合并更改。當作為Eclipse插件運行時 ,MBG可以自動合并Java文件。

二、MyBatis Generator使用

1、新建MBG的配置文件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='generator.properties'></properties> <!--指定特定數據庫的jdbc驅動jar包的位置--> <!--<classPathEntry location='${jdbc.driverLocation}'/>--> <context targetRuntime='MyBatis3'> <!-- optional,旨在創建class時,對注釋進行控制,false生成注釋,true無注釋 --> <commentGenerator> <property name='suppressDate' value='false'/> <property name='suppressAllComments' value='false'/> </commentGenerator> <!--jdbc的數據庫連接 --> <jdbcConnection driverClass='${jdbc.driverClass}' connectionURL='${jdbc.connectionURL}' userId='${jdbc.userId}' password='${jdbc.password}'> </jdbcConnection> <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer, 為 true時把JDBC DECIMAL 和 NUMERIC 類型解析為java.math.BigDecimal --> <!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制--> <javaTypeResolver> <property name='forceBigDecimals' value='false'/> </javaTypeResolver> <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類 targetPackage 指定生成的model生成所在的包名 targetProject 指定在該項目下所在的路徑|指定生成到的工程名稱 --> <javaModelGenerator targetPackage='com.test.model' targetProject='.srcmainjava'> <!-- 是否允許子包,即targetPackage.schemaName.tableName --> <property name='enableSubPackages' value='false'/> <!-- 是否對model添加 構造函數 true添加,false不添加--> <property name='constructorBased' value='false'/> <!-- 是否對類CHAR類型的列的數據進行trim操作 --> <property name='trimStrings' value='true'/> <!-- 建立的Model對象是否 不可改變 即生成的Model對象不會有 setter方法,只有構造方法 --> <property name='immutable' value='false'/> </javaModelGenerator> <!--Mapper映射文件生成所在的目錄 為每一個數據庫的表生成對應的SqlMapper文件 --> <sqlMapGenerator targetPackage='com.test.mapper' targetProject='.srcmainjava'> <property name='enableSubPackages' value='false'/> </sqlMapGenerator> <!-- 客戶端代碼,生成易于使用的針對Model對象和XML配置文件 的代碼 type='ANNOTATEDMAPPER',生成Java Model 和基于注解的Mapper對象 type='MIXEDMAPPER',生成基于注解的Java Model 和相應的Mapper對象 type='XMLMAPPER',生成SQLMapper XML文件和獨立的Mapper接口 --> <javaClientGenerator targetPackage='com.test.mapper' targetProject='.srcmainjava' type='XMLMAPPER'> <property name='enableSubPackages' value='true'/> </javaClientGenerator> <!--需要映射的數據庫的表名--> <table tableName='t_userinfo' domainObjectName='UserInfo' enableCountByExample='false' enableUpdateByExample='false' enableDeleteByExample='false' enableSelectByExample='false' selectByExampleQueryId='false'> </table> </context></generatorConfiguration>

2、新建generator.properties文件

jdbc.driverLocation=C:mysql-connector-java-5.1.43.jarjdbc.driverClass=com.mysql.jdbc.Driverjdbc.connectionURL=jdbc:mysql://localhost:3306/mybatisjdbc.userId=rootjdbc.password=tiger

3、配置執行mybatis generator操作,這里有兩種方式

第1種方式:

如果使用maven項目就可以省去編寫Java啟動類,使用maven插件和配置文件pom.xml即可,插件啟動maven-generator,在pom.xml中添加maven-generator插件

<plugins> <!--myBatis逆向工程插件--> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.35</version> </dependency> </dependencies> </plugin></plugins>

點擊mybatis-generator:generate就能執行mybatis generator了

Mybatis Generator逆向工程的使用詳細教程

第2種方式:

1、如果不是maven項目添加該mybatis-generator-core-1.3.2.jar,編寫main方法指向mybatis逆向工程,我給依賴粘貼到下面了

<!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version></dependency>

2、修改generatorConfig.xml文件,放開注釋的該配置

<classPathEntry location='${jdbc.driverLocation}'/>

3、然后編寫測試類執行

/** * 如果不是maven項目可以這樣生成 */public class MybatisGeneratorTest { public static void main(String[] args) throws InterruptedException, SQLException, IOException, InvalidConfigurationException, XMLParserException { List<String> warnings = new ArrayList<String>(); //生成的java文件是否覆蓋 boolean overwrite = true; //指定逆向工程配置文件 //File configFile = new File('E:projectmybatis-generatorsrcmainresourcesgeneratorConfig.xml'); InputStream resourceAsStream = MybatisGeneratorTest.class.getClassLoader().getResourceAsStream('generatorConfig.xml'); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(resourceAsStream); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings); myBatisGenerator.generate(null); }}

介紹完這兩種方式,查看數據表:

Mybatis Generator逆向工程的使用詳細教程

查看生成的實體類:​

Mybatis Generator逆向工程的使用詳細教程

TIP:可以看出如果實體類想要遵循駝峰命名規范,數據庫表字段名設計需要用'_'來劃分

查看生成的文件信息:​

Mybatis Generator逆向工程的使用詳細教程

TIP1:必須在<plugin></plugin>標簽里添加數據庫驅動,在其他地方添加無效,如果不添加會報找不到驅動錯誤,如過不在該插件添加數據庫依賴的話可以使用 <classPathEntry location='${jdbc.driverLocation}'/> 來指定數據庫驅動位置。

TIP2:如果你在使用mybatis generator插件執行的時候報[ERROR] Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.2:generate (default-cli) on project mybatis-generator: <properties> resource generator.properties does not exist -> [Help 1]​

Mybatis Generator逆向工程的使用詳細教程

盡管你的 <properties resource='generator.properties'></properties>配置的沒有問題,但是還是找不到generator.properties,查看該配置,注釋掉​

Mybatis Generator逆向工程的使用詳細教程

該配置會改變generatorConfig.xml中讀取generator.properties文件的默認路徑

TIP3:Mybatis Generator反向工程默認不會覆蓋生成的*.java文件。也可以設置覆蓋生成的*.java文件,在反向工程插件mybatis-generator-maven-plugin添加該配置<overwrite>true</overwrite>則會覆蓋生成的*.java文件,如圖​

Mybatis Generator逆向工程的使用詳細教程

Mybatis Generator不會覆蓋你的mapper.xml文件,MBG會合并追加到mapper.xml和你自定義的存在一起,但是如果你修改MBG第一次默認生成的SQL(MBG生成的CRUD),MBG會重新把自己生成的CRUD恢復默認,說白了,MBG只會覆蓋他自己生成的SQL,不會覆蓋你自定義的,你自定義的不變。。。如圖,他不會動你的自定義SQL,只會覆蓋Mybatis反向工程自己生成的SQL,前提MBG自動生成SQL語句的注釋要存在。​

Mybatis Generator逆向工程的使用詳細教程

在最常見的用例中,MyBatis Generator(MBG)由XML配置文件驅動。配置文件告訴MBG

如何連接到數據庫 生成什么對象,以及如何生成它們 應使用哪些表生成對象

官方MBG配置文件詳解地址:http://mybatis.org/generator/configreference/xmlconfig.html

附帶一個MBG的中文配置文件詳解:https://www.jianshu.com/p/e09d2370b796

更多Mybatis逆向工程的使用參考:http://www.mybatis.org/generator/index.html

總結

到此這篇關于Mybatis Generator逆向工程的使用詳細教程的文章就介紹到這了,更多相關Mybatis Generator逆向工程內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 探鸣起名网-品牌起名-英文商标起名-公司命名-企业取名包满意 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 【官网】博莱特空压机,永磁变频空压机,螺杆空压机-欧能优 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 牛奶检测仪-乳成分分析仪-北京海谊 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 小型铜米机-干式铜米机-杂线全自动铜米机-河南鑫世昌机械制造有限公司 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 圆形振动筛_圆筛_旋振筛_三次元振动筛-河南新乡德诚生产厂家 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 希望影视-高清影视vip热播电影电视剧免费在线抢先看 | BHK汞灯-百科|上海熙浩实业有限公司 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 光环国际-新三板公司_股票代码:838504 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 全自动包装机_灌装机生产厂家-迈驰包装设备有限公司 | 西安烟道厂家_排气道厂家_包立管厂家「陕西西安」推荐西安天宇烟道 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 无水硫酸铝,硫酸铝厂家-淄博双赢新材料科技有限公司 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 |