程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> MyBatis Generator生成代碼及應用方法詳解

MyBatis Generator生成代碼及應用方法詳解

編輯:關於JAVA

MyBatis Generator生成代碼及應用方法詳解。本站提示廣大學習愛好者:(MyBatis Generator生成代碼及應用方法詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是MyBatis Generator生成代碼及應用方法詳解正文


為何要有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生成代碼及應用方法,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved