MyBatis Generator生成程式碼及使用方式詳解

MyBatis Generator生成程式碼及使用方式詳解
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

為什麼要有mybatis

mybatis 是一個 Java 的 ORM 框架,ORM 的出現就是為了簡化開發。最初的開發方式是業務邏輯和資料庫查詢邏輯是分開的,或者在程式中編寫 sql 語句,或者呼叫 sql 儲存過程。這樣導致思維需要在語言邏輯和 sql 邏輯之間切換,導致開發效率低下。所以出現了一系列的 ORM 框架,ORM 框架將資料庫表和 Java 物件對應起來,當運算元據庫時,只需要操作物件的 Java 物件即可,例如設定幾個 and 條件,只需要設定幾個屬性即可。

為什麼要有mybatis generator

雖然說有了 mybatis 框架,但是學習 mybatis 也需要學習成本,尤其是配置它需要的 XML 檔案,那也是相當繁瑣,而且配置中出現錯誤,不容易定位。當出現莫名其妙的錯誤或者有大批量需要生成的物件時,時常會有種生無可戀的感覺在腦中徘徊。故此, mybatis generator 應運而生了。

它只需要簡單配置,即可完成大量的表到 mybatis Java 物件的生成工作,不僅速度快,而且不會出錯,可讓開發人員真正的專注於業務邏輯的開發。

官方提供的 mybatis generator 功能比較簡單,對於稍微複雜但是開發中必然用到的分頁功能、批量插入功能等沒有實現,但已經有成熟的外掛功能支援。

我已經將我們平時用的mybatis生成工具放到 github ,其中已整合了分頁、批量插入、序列化功能。可到 這裡 檢視,已經介紹了使用方法。

mybatis generator 生成的檔案結構

生成的檔案包含三類:

1.Model 實體檔案,一個資料庫表生成一個 Model 實體;

2.ModelExample 檔案,此檔案和實體檔案在同一目錄下,主要用於查詢條件構造;

3.Mapper 介面檔案,資料數操作方法都在此介面中定義;

4.Mapper XML 配置檔案;

在配置檔案中配置好檔案的生成路徑,並設定好對應的包名,即可生成對應的目錄結構和檔案。我將生成目錄設定為 test 目錄,實體包名設定為 com.fengzheng.dao.entity ,介面包名設定為 com.fengzheng.dao.mapper ,然後生成的檔案目錄結構如下圖所示:

如何編寫程式碼呢

所有的方法呼叫都來自於生成的介面檔案,在 Spring MVC 中,需要在呼叫方宣告,用一個黑名單介面為例,生成的介面檔案為 BlackListIPMapper ,所以在呼叫方要宣告此介面,如下:


@Autowired
private BlackListIPMapper blackListipMapper;

資料庫查詢

查詢是最常用功能,如下方法是查詢 IP 為某值的記錄,如果知道主鍵的話,可以用 selectByPrimaryKey 方法。


public BlackListIP get(String ip){
BlackListIPExample example = new BlackListIPExample();
example.createCriteria().andIpEqualTo(ip);
List<BlackListIP> blackListIPList = blackListipMapper.selectByExample(example);
if(blackListIPList!=null && blackListIPList.size()>0){
return blackListIPList.get(0);
}
return null;
}

更新、新增、刪除方法呼叫方法類似,具體可檢視相關文件介紹。  

排序


public BlackListIP get(String ip){
BlackListIPExample example = new BlackListIPExample();
example.setOrderByClause("CREATE_TIME desc"); //按建立時間排序
example.createCriteria().andIpEqualTo(ip);
List<BlackListIP> blackListIPList = blackListipMapper.selectByExample(example);
if(blackListIPList!=null && blackListIPList.size()>0){
return blackListIPList.get(0);
}
return null;
}

分頁


public PageInfo list(Account account, PageInfo pageInfo,String startTime,String endTime) {
account.setIsDel(SysParamDetailConstant.IS_DEL_FALSE);
AccountExample example = getCondition(account,startTime,endTime);
if (null != pageInfo && null != pageInfo.getPageStart()) {
example.setLimitClauseStart(pageInfo.getPageStart());
example.setLimitClauseCount(pageInfo.getPageCount());
}
example.setOrderByClause(" CREATE_TIME desc ");
List<Account> list = accountMapper.selectByExample(example);
int totalCount = accountMapper.countByExample(example);
pageInfo.setList(list);
pageInfo.setTotalCount(totalCount);
return pageInfo;
}

實現 a=x and (b=xx or b=xxx)這樣的查詢條件  

雖然自動生成程式碼很方便,但凡事有利即有弊,mybatis generator 沒有辦法生成表聯查(join)功能,只能手動新增。如下實現了a=x and (b=xx or b=xxx)這樣的條件拼接。


AccountExample accountExample = new AccountExample();
AccountExample.Criteria criteria = accountExample.createCriteria().andTypeEqualTo("4");
criteria.addCriterion(String.format(" (ID=%d or ID=%d) ",34,35));
List<Account> accounts = accountMapper.selectByExample(accountExample);
return accounts;

但是需要修改一點程式碼,修改 org.mybatis.generator.codegen.mybatis3.model包下的ExampleGenerator的第524行程式碼,將 method.setVisibility(JavaVisibility.PROTECTED); 改為 method.setVisibility(JavaVisibility.PUBLIC);

改動已同步到github上。

以上所述是小編給大家介紹的MyBatis Generator生成程式碼及使用方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對指令碼之家網站的支援!

您可能感興趣的文章:

IDEA Maven Mybatis generator 自動生成程式碼(例項講解)SSM框架通過mybatis-generator自動生成程式碼(推薦)MyBatis_Generator外掛的安裝以及簡單使用方法(圖解)詳解MyBatis Generator自動建立程式碼(dao,mapping,poji)使用Mybatis Generator結合Ant指令碼快速自動生成Model、Mapper等檔案的方法Java的MyBatis框架中MyBatis Generator程式碼生成器的用法詳解使用MyBatis Generator自動建立程式碼

相關文章

程式語言 最新文章