mybatis逆向工程之配置

来源:http://www.cnblogs.com/luckypo/archive/2017/08/14/7356249.html
-Advertisement-
Play Games

逆向工程1.什麼是逆向工程mybaits需要程式員自己編寫sql語句,mybatis官方提供逆向工程 可以針對單表自動生成mybatis執行所需要的代碼(mapper.java,mapper.xml、po..)企業實際開發中,常用的逆向工程方式:由於資料庫的表生成java代碼。2.下載逆向工程myb ...


逆向工程

1.什麼是逆向工程

mybaits需要程式員自己編寫sql語句,mybatis官方提供逆向工程 可以針對單表自動生成mybatis執行所需要的代碼(mapper.java,mapper.xml、po..)

企業實際開發中,常用的逆向工程方式:
由於資料庫的表生成java代碼。

2.下載逆向工程
mybatis-generator-core-1.3.2-bundle.zip

3.使用方法(會用)

3.1運行逆向工程 
官方文檔中提供的運行逆向工程的幾種方法
Running MyBatis Generator

MyBatis Generator (MBG) can be run in the following ways:

(1)From the command prompt with an XML configuration
(2)As an Ant task with an XML configuration
(3)As a Maven Plugin
(4)From another Java program with an XML configuration
(5)From another Java program with a Java based configuration
(6)還可以通過eclipse的插件生成代碼

建議使用java程式方式(From another Java program with an XML configuration),不依賴開發工具。

下麵創建一個生成逆向文件的工程,將自動生成的文件再拷貝到原工程中去(這麼做是為了放止直接在源文件中生成會覆蓋掉同名文件)
導入的jar包和工程結構截圖如下:

如圖


3.2生成代碼配置文件
generatorConfig.xml:

[html] view plain copy  
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE generatorConfiguration  
  3.   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
  4.   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">  
  5.   
  6. <generatorConfiguration>  
  7.     <context id="testTables" targetRuntime="MyBatis3">  
  8.         <commentGenerator>  
  9.             <!-- 是否去除自動生成的註釋 true:是 : false:否 -->  
  10.             <property name="suppressAllComments" value="true" />  
  11.         </commentGenerator>  
  12.         <!--資料庫連接的信息:驅動類、連接地址、用戶名、密碼 -->  
  13.         <jdbcConnection driverClass="com.mysql.jdbc.Driver"  
  14.             connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"  
  15.             password="1234">  
  16.         </jdbcConnection>  
  17.         <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"  
  18.             connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"   
  19.             userId="yycg"  
  20.             password="yycg">  
  21.         </jdbcConnection> -->  
  22.   
  23.         <!-- 預設false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和   
  24.             NUMERIC 類型解析為java.math.BigDecimal -->  
  25.         <javaTypeResolver>  
  26.             <property name="forceBigDecimals" value="false" />  
  27.         </javaTypeResolver>  
  28.   
  29.         <!-- targetProject:生成PO類的位置 -->  
  30.         <javaModelGenerator targetPackage="cn.edu.hpu.ssm.po"  
  31.             targetProject=".\src">  
  32.             <!-- enableSubPackages:是否讓schema作為包的尾碼 -->  
  33.             <property name="enableSubPackages" value="false" />  
  34.             <!-- 從資料庫返回的值被清理前後的空格 -->  
  35.             <property name="trimStrings" value="true" />  
  36.         </javaModelGenerator>  
  37.         <!-- targetProject:mapper映射文件生成的位置 -->  
  38.         <sqlMapGenerator targetPackage="cn.edu.hpu.ssm.mapper"   
  39.             targetProject=".\src">  
  40.             <!-- enableSubPackages:是否讓schema作為包的尾碼 -->  
  41.             <property name="enableSubPackages" value="false" />  
  42.         </sqlMapGenerator>  
  43.         <!-- targetPackage:mapper介面生成的位置 -->  
  44.         <javaClientGenerator type="XMLMAPPER"  
  45.             targetPackage="cn.edu.hpu.ssm.mapper"   
  46.             targetProject=".\src">  
  47.             <!-- enableSubPackages:是否讓schema作為包的尾碼 -->  
  48.             <property name="enableSubPackages" value="false" />  
  49.         </javaClientGenerator>  
  50.         <!-- 指定資料庫表 -->  
  51.         <table tableName="items"></table>  
  52.         <table tableName="orders"></table>  
  53.         <table tableName="orderdetail"></table>  
  54.         <table tableName="user"></table>  
  55.         <!-- <table schema="" tableName="sys_user"></table>  
  56.         <table schema="" tableName="sys_role"></table>  
  57.         <table schema="" tableName="sys_permission"></table>  
  58.         <table schema="" tableName="sys_user_role"></table>  
  59.         <table schema="" tableName="sys_role_permission"></table> -->  
  60.           
  61.         <!-- 有些表的欄位需要指定java類型  
  62.          <table schema="" tableName="">  
  63.             <columnOverride column="" javaType="" />  
  64.         </table> -->  
  65.     </context>  
  66. </generatorConfiguration>  


3.3執行生成程式
GeneratorSqlmap.java: 

[java] view plain copy  
  1. import java.io.File;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4.   
  5. import org.mybatis.generator.api.MyBatisGenerator;  
  6. import org.mybatis.generator.config.Configuration;  
  7. import org.mybatis.generator.config.xml.ConfigurationParser;  
  8. import org.mybatis.generator.internal.DefaultShellCallback;  
  9.   
  10.   
  11. public class GeneratorSqlmap {  
  12.   
  13.   
  14.     public void generator() throws Exception{  
  15.   
  16.   
  17.         List<String> warnings = new ArrayList<String>();  
  18.         boolean overwrite = true;  
  19.         //載入配置文件  
  20.         File configFile = new File("generatorConfig.xml");   
  21.         ConfigurationParser cp = new ConfigurationParser(warnings);  
  22.         Configuration config = cp.parseConfiguration(configFile);  
  23.         DefaultShellCallback callback = new DefaultShellCallback(overwrite);  
  24.         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,  
  25.                 callback, warnings);  
  26.         myBatisGenerator.generate(null);  
  27.   
  28.   
  29.     }   
  30.     public static void main(String[] args) throws Exception {  
  31.         try {  
  32.             GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();  
  33.             generatorSqlmap.generator();  
  34.         } catch (Exception e) {  
  35.             e.printStackTrace();  
  36.         }  
  37.           
  38.     }  
  39. }  



生成後的代碼:

如圖


3.4使用生成的代碼

需要將生成工程中所生成的代碼拷貝到自己的工程中。我們這裡吧ItemsMapper.java和ItemsMapper.xml、Items、ItemsExample類拷入我們的原工程。

測試ItemsMapper中的方法

[java] view plain copy  
  1. package cn.edu.hpu.ssm.test;  
  2.   
  3. import static org.junit.Assert.fail;  
  4.   
  5. import java.util.Date;  
  6. import java.util.List;  
  7.   
  8.   
  9. import org.junit.Before;  
  10. import org.junit.Test;  
  11. import org.springframework.context.ApplicationContext;  
  12. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  13.   
  14.   
  15. import cn.edu.hpu.ssm.mapper.ItemsMapper;  
  16. import cn.edu.hpu.ssm.po.Items;  
  17. import cn.edu.hpu.ssm.po.ItemsExample;  
  18.   
  19.   
  20. public class ItemsMapperTest {  
  21.   
  22.   
  23.     private ApplicationContext applicationContext;  
  24.       
  25.     private ItemsMapper itemsMapper;  
  26.       
  27.     //註解Before是在執行本類所有測試方法之前先調用這個方法  
  28.     @Before  
  29.     public void setup() throws Exception{  
  30.         applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");  
  31.         itemsMapper=(ItemsMapper)applicationContext.getBean("itemsMapper");  
  32.     }  
  33.       
  34.     //根據主鍵刪除  
  35.     @Test  
  36.     public void testDeleteByPrimaryKey() {  
  37.         fail("Not yet implemented");  
  38.     }  
  39.   
  40.   
  41.     //插入  
  42.     @Test  
  43.     public void testInsert() {  
  44.         Items items=new Items();  
  45.         items.setName("iPhone-5S");  
  46.         items.setPrice(3999f);  
  47.         items.setDetail("正品行貨");  
  48.         items.setPic("sdasd.jpg");  
  49.         items.setCreatetime(new Date());  
  50.         itemsMapper.insert(items);  
  51.     }  
  52.   
  53.   
  54.     //自定義條件來查詢  
  55.     @Test  
  56.     public void testSelectByExample() {  
  57.         ItemsExample itemsExample=new ItemsExample();  
  58.         //通過Criteria構造查詢條件  
  59.         ItemsExample.Criteria criteria=itemsExample.createCriteria();  
  60.         criteria.andNameEqualTo("電視機");  
  61.         //可能返回多條記錄  
  62.         List<Items> list=itemsMapper.selectByExample(itemsExample);  
  63.         for (int i = 0; i < list.size(); i++) {  
  64.             Items it=list.get(i);  
  65.             System.out.println(it.getId()+":"+it.getName());  
  66.         }  
  67.     }  
  68.   
  69.   
  70.     //根據主鍵來查詢  
  71.     @Test  
  72.     public void testSelectByPrimaryKey() {  
  73.         Items items=itemsMapper.selectByPrimaryKey(1);  
  74.         System.out.println(items.getName());  
  75.     }  
  76.   
  77.   
  78.     //更新數據  
  79.     @Test  
  80.     public void testUpdateByPrimaryKey() {  
  81.         //對所有欄位進行更新,需要先查詢出來再更新  
  82.         Items items = itemsMapper.selectByPrimaryKey(1);      
  83.         items.setName("iPhone");      
  84.         itemsMapper.updateByPrimaryKey(items);  
  85.           
  86.         //如果傳入欄位不空為才更新,在批量更新中使用此方法,不需要先查詢再更新  
  87.         //itemsMapper.updateByPrimaryKeySelective(record);  
  88.     }  
  89.   
  90.   
  91. }  

 

逆向工程的創建和使用就講解到這裡

轉載請註明出處:http://blog.csdn.net/acmman/article/details/46906871


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目描述 Farmer John wants the cows to prepare for the county jumping competition, so Bessie and the gang are practicing jumping over hurdles. They are ge ...
  • 1.安裝svnyum install subversion 2.創建版本庫fengyu(版本庫的名字取來和你web項目的名字相同,否則你在伺服器檢出後會變成web項目里還有一層版本庫的目錄,裡面才是項目,名字相同的話就不用創建web項目目錄,直接在www下麵進行檢出就OK。)mkdir -p /va ...
  • 如果要應聘高級開發工程師職務,僅僅懂得Java的基礎知識是遠遠不夠的,還必須懂得常用數據結構、演算法、網路、操作系統等知識。因此本文不會講解具體的技術,筆者綜合自己應聘各大公司的經歷,整理了一份大公司對Java高級開發工程師職位的考核綱要,希望可以幫助到需要的人。 當前,市面上有《Java XX寶典》 ...
  • /** * @return int|mixed * $user 返回的時候是需要解密的 */ function is_login(){ $user = session('user_auth'); if (empty($user)) { return 0; } else { return sessio ...
  • 本次重構優化內容 1 前端頁面增加JS判斷 2 使用JSTL+EL替換JSP語句 3 Servlet增加用戶名是否重覆檢查 註冊頁面 userReg.jsp 後臺Servlet ...
  • 題目背景 令 夜 色 的 鐘 聲 響 起 令 黃 昏 (起 始) 的 鐘 聲 響 起 我 愛 (渴 望) 的 就 只 有 你 我 愛 ( 渴 望 ) 你 正因如此 獨自安靜地哭泣吧 正因如此 無論你在何處哭泣 我都會率先去迎接你 不存在何處 直至深夜(小小的你) 你存在此處 至美者(心顯崇高之人) ...
  • file類常用方法 delete()刪除此抽象路徑名錶示的文件和目錄。 equals()測試此抽象路徑名與給定對象是否相等。 exists()測試此抽象路徑名錶示的文件或目錄是否存在。 getName()返回由此抽象路徑名錶示的文件或目錄的名稱。 isDirectory()測試此抽象路徑名錶示的文件 ...
  • 題目背景 縮點+DP 題目描述 給定一個n個點m條邊有向圖,每個點有一個權值,求一條路徑,使路徑經過的點權值之和最大。你只需要求出這個權值和。 允許多次經過一條邊或者一個點,但是,重覆經過的點,權值只計算一次。 輸入輸出格式 輸入格式: 第一行,n,m 第二行,n個整數,依次代表點權 第三至m+2行 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...