欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年09月22日 10:22:42   作者:風的姿態(tài)  
這篇文章主要介紹了MyBatis Generator生成代碼及使用方式的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

為什么要有mybatis

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

為什么要有mybatis generator

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

它只需要簡單配置,即可完成大量的表到 mybatis Java 對象的生成工作,不僅速度快,而且不會出錯,可讓開發(fā)人員真正的專注于業(yè)務邏輯的開發(fā)。

官方提供的 mybatis generator 功能比較簡單,對于稍微復雜但是開發(fā)中必然用到的分頁功能、批量插入功能等沒有實現,但已經有成熟的插件功能支持。

我已經將我們平時用的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;
}

更新、添加、刪除方法調用方法類似,具體可查看相關文檔介紹?! ?br />

排序

public BlackListIP get(String ip){
BlackListIPExample example = new BlackListIPExample();
example.setOrderByClause("CREATE_TIME desc"); //按創(chuàng)建時間排序
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 沒有辦法生成表聯(lián)查(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生成代碼及使用方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 詳解MyBatis-Plus updateById方法更新不了空字符串/null解決方法

    詳解MyBatis-Plus updateById方法更新不了空字符串/null解決方法

    這篇文章主要介紹了詳解MyBatis-Plus updateById方法更新不了空字符串/null解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • mybatis-plus分頁查詢三種方法小結

    mybatis-plus分頁查詢三種方法小結

    本文主要介紹了mybatis-plus分頁查詢三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Springboot項目javax.validation使用方法詳解

    Springboot項目javax.validation使用方法詳解

    這篇文章主要介紹了Springboot項目javax.validation使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • IntelliJ?idea報junit?no?tasks?available問題的解決辦法

    IntelliJ?idea報junit?no?tasks?available問題的解決辦法

    這篇文章主要給大家介紹了關于IntelliJ?idea報junit?no?tasks?available問題的解決辦法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • Java利用Reflect實現封裝Excel導出工具類

    Java利用Reflect實現封裝Excel導出工具類

    這篇文章主要為大家詳細介紹了Java如何利用Reflect實現封裝Excel導出工具類,文中的實現方法講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-11-11
  • Java HtmlEmail 郵件發(fā)送的簡單實現代碼

    Java HtmlEmail 郵件發(fā)送的簡單實現代碼

    下面小編就為大家?guī)硪黄狫ava HtmlEmail 郵件發(fā)送的簡單實現代碼。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java實現京東聯(lián)盟API數據獲取功能

    Java實現京東聯(lián)盟API數據獲取功能

    這篇文章介紹了Java獲取京東聯(lián)盟API數據的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Java正則表達式Pattern和Matcher原理詳解

    Java正則表達式Pattern和Matcher原理詳解

    這篇文章主要介紹了Java正則表達式Pattern和Matcher原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Windows 10上JDK環(huán)境安裝配置圖文教程

    Windows 10上JDK環(huán)境安裝配置圖文教程

    這篇文章主要為大家詳細介紹了Windows 10上JDK環(huán)境安裝配置圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • vscode開發(fā)maven的javaweb項目并部署到tomcat及配置指南

    vscode開發(fā)maven的javaweb項目并部署到tomcat及配置指南

    這篇文章主要給大家介紹了關于vscode開發(fā)maven的javaweb項目并部署到tomcat及配置的相關資料,在vscode中創(chuàng)建maven項目,需要逐一操作下面的環(huán)節(jié),文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-12-12

最新評論