Mybatis之逆向工程構建專案案例分享

mybaits需要程式設計師自己編寫sql語句,mybatis官方提供逆向工程 可以針對單表自動生成mybatis執行所需要的程式碼(mapper。java,mapper。xml、pojo等)。有了sql表的結構後, 我們就可以利用逆向工程直接生成相應的Dao和JavaBean程式碼, 這樣能夠大大減少我們平時開發的工作量。

但是我還是覺得使用逆向工程侷限性很大, 例如我們的逆向工程main方法只能執行一次, 如果再次執行就會繼續生成相應的Dao和JavaBean, 除非我們把之前生成的全都刪除。 這樣對於程式碼的擴充套件性就不是很好, 如果我們需要對錶結構進行修改, 那麼我們就必須對生成的Dao和JavaBean進行一個個修改。

下面就直接進入開發階段:

1, 資料庫表結構

Mybatis之逆向工程構建專案案例分享

2,將逆向工程匯入到Eclipse中

Mybatis之逆向工程構建專案案例分享

3,使用逆向工程

逆向工程目錄結構:

Mybatis之逆向工程構建專案案例分享

這裡的bean和dao都是使用逆向工程自動生成的兩個包, 我們只需要將相應的Dao和Javabean複製到相應的project下即可。

看下生成Dao和Bean的程式碼:

import java。io。File;import java。util。ArrayList;import java。util。List;import org。mybatis。generator。api。MyBatisGenerator;import org。mybatis。generator。config。Configuration;import org。mybatis。generator。config。xml。ConfigurationParser;import org。mybatis。generator。internal。DefaultShellCallback;public class GeneratorSqlmap { public void generator() throws Exception{ List warnings = new ArrayList(); boolean overwrite = true; File configFile = new File(“generatorConfig。xml”); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp。parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator。generate(null); } public static void main(String[] args) throws Exception { try { GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap(); generatorSqlmap。generator(); } catch (Exception e) { e。printStackTrace(); } }}

下面就是看下generatorConfig.xml中的一些配置:

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 7 8 9 <!—— JavaBean 實現 序列化 介面 ——>10 11 12 <!—— genenat entity時,生成toString ——>13 14 <!—— 自定義物理分頁 可生成支援Mysql資料的limit 不支援Oracle ——>15 16 <!—— 自定義查詢指定欄位 ——>17 18 <!—— 開啟支援記憶體分頁 可生成 支援記憶體分佈的方法及引數 19 20 ——>21 <!—— generate entity時,生成hashcode和equals方法22 23 ——>24 <!—— 此處是將Example改名為Criteria 當然 想改成什麼都行~ ——> 25 26 27 <!—— 替換後28 29 ——>30 31 32 <!—— 此處是將UserMapper。xml改名為UserDao。xml 當然 想改成什麼都行~ ——> 33 34 35 36 37 38 <!—— 此處是將UserMapper改名為UserDao 介面 當然 想改成什麼都行~ ——> 39 40 41 42 43 44 45 46 47 <!—— 是否去除自動生成的註釋 true:是 : false:否 48 49 ——>50 51 52 <!——資料庫連線的資訊:驅動類、連線地址、使用者名稱、密碼 ——>53 56 57 <!—— 61 ——>62 63 <!—— 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL 和 64 NUMERIC 型別解析為java。math。BigDecimal ——>65 66 67 68 69 70 <!—— targetProject:生成PO類的位置 ——>71 73 <!—— enableSubPackages:是否讓schema作為包的字尾 ——>74 75 <!—— 從資料庫返回的值被清理前後的空格 ——>76 77 78 79 <!—— targetProject:mapper對映檔案生成的位置 ——>80 82 <!—— enableSubPackages:是否讓schema作為包的字尾 ——>83 84 85 <!—— targetPackage:mapper介面生成的位置 ——>86 89 <!—— enableSubPackages:是否讓schema作為包的字尾 ——>90 91 92 93 <!—— 指定資料庫表 ——>94 <!—— 使用者模組表 ——>95

96 97 <!—— 商品模組表 ——>98
99 <!—— 商品介紹 大欄位對映 ——>100 101 <!—— 包裝清單 大欄位對映 ——>102 103 <!—— 商品圖片 大欄位對映 ——>104 105
106 107
108
109 110 <!—— 訂單模組表 ——>111
112 <!—— 支付方式 0:到付 1:線上 2:郵局 3:公司轉帳 ——>113 114 <!—— 貨到付款方式。1現金,2POS刷卡 ——>115 116 <!—— 送貨時間 ——>117 118 <!—— 支付狀態 :0到付1待付款,2已付款,3待退款,4退款成功,5退款失敗 ——>119 120 <!—— 訂單狀態 0:提交訂單 1:倉庫配貨 2:商品出庫 3:等待收貨 4:完成 5待退貨 6已退貨 ——>121 122 <!—— 訂單狀態 預設Boolean ——>123 124
125 126 127 <!—— 指定資料庫所有表 128
129 ——>130 131 <!—— 有些表的欄位需要指定java型別132
133 134
——>135 136

主要核心內容就是在這個配置檔案中寫入相應的配置, 具體的使用方法和配置註釋中都有說明。

4, 使用逆向工程進行增刪改查操作

1 package cn。itcast;2 3 import java。util。Date;4 import java。util。List;5 6 import javax。annotation。Resource;7 8 import org。junit。Test;9 import org。junit。runner。RunWith;10 import org。springframework。beans。factory。annotation。Autowired;11 import org。springframework。test。context。ContextConfiguration;12 import org。springframework。test。context。junit4。SpringJUnit4ClassRunner;13 14 import cn。itcast。core。bean。TestTb;15 import cn。itcast。core。bean。product。Product;16 import cn。itcast。core。bean。product。ProductQuery;17 import cn。itcast。core。dao。TestTbDao;18 import cn。itcast。core。dao。product。ProductDao;19 import cn。itcast。core。service。TestTbService;20 21 @RunWith(SpringJUnit4ClassRunner。class)22 @ContextConfiguration(locations = {“classpath:application-context。xml”})23 public class TestProduct {24 25 @Resource26 private ProductDao productDao;27 28 @Test29 public void testProduct() throws Exception {30 31 //Product p = productDao。selectByPrimaryKey(1L);32 //System。out。println(p);33 34 //查詢: 按照條件查詢, 支援模糊查詢, 分頁 排序 指定欄位查, 查詢總數35 ProductQuery productQuery = new ProductQuery();36 //模糊查詢37 //productQuery。createCriteria()。andNameLike(“%” + “顯瘦” + “%”);38 //設定條件精準查詢39 //productQuery。createCriteria()。andNameEqualTo(“2016最新款的締彩楓2015秋冬新款時尚英倫風大衣簡約收腰顯瘦灰色中長款毛呢外套 灰色 S”)40 //。andBrandIdEqualTo(3L);41 42 //排序 id desc43 productQuery。setOrderByClause(“id desc”);44 45 //分頁46 productQuery。setPageNo(1);47 productQuery。setPageSize(3);48 49 //根據指定欄位查詢50 productQuery。setFields(“id, name”);51 52 List products = productDao。selectByExample(productQuery);53 for (Product product : products) {54 System。out。println(product);55 }56 57 //查詢總條數58 productDao。countByExample(productQuery);59 60 //儲存61 //productDao。insertSelective(product);62 63 //更新64 //productDao。updateByExampleSelective(record, example);65 //productDao。updateByPrimaryKeySelective(record);66 }67 68 }

測試類就是如上, 如果對於dao中的方法中的引數不是很詳細, 那麼就可以直接看dao。xml中的sql語句, 這樣就可以一目瞭然了。

這裡只是做個簡單的總結, 由於dao和bean全都是自動生成的, 所以裡面的程式碼還有必要再去多看兩眼的。

想要原始碼的小夥伴可以私信我獲取哦

私信我:“資料”,可免費領取更多學習資料

Mybatis之逆向工程構建專案案例分享

Mybatis之逆向工程構建專案案例分享