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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...