如何開啟MyBatis的駝峰命名

MyBatis是一個持久層框架,與許多其他的ORM框架一樣,它可以為你訪問資料庫提供非常方便的API介面,提供了很多種不同的映射方法,但在默認情況下,其SQL語句生成並不會遵循Java中的命名習慣,如果不進行額外的配置,它會將資料庫中的下劃線命名轉化為Java中的駝峰命名方式,這就使得我們需要一些額外的配置來改善這一默認設置。接下來,我們會根據以下幾個方面對如何開啟Mybatis的駝峰命名進行詳細闡述。

一、配置文件中設置

MyBatis的配置文件XML中有可選的配置來啟用和配置這種命名規範。配置文件中有兩個屬性「mapUnderscoreToCamelCase」 和「useGeneratedKeys 」。前者可以將資料庫列名中的下劃線自動轉化為駝峰式,而後者則可以配置是否允許ID自動生成器來生成主鍵ID。這裡我們需要注意,newStandardSqlSessionFactory()方法接受的參數是Configuration對象,而該對象來自於Document對象轉換而成,即:它是MyBatis框架內部用於描述整個配置文件的對象。可以看代碼:

  XmlConfigBuilder xmlConfigBuilder =new XmlConfigBuilder(new InputStream(){......});
  Configuration configuration=xmlConfigBuilder.parse();
  SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(configuration);

如何設置呢?如下所示:



 
     
 


二、註解方式設置

除了可以使用配置文件的方式設置之外,MyBatis也提供了註解方式來生成SQL,可以通過在介面上添加@Select,@Update等註解,來代替XML配置文件。在註解中的SQL語句中也可以使用#{}的方式來引用Java對象的屬性,MyBatis將會自動將比如:userName轉化為比如:user_name

public interface UserMapper {
 //註解方式
 @Select("SELECT * FROM user WHERE user_id = #{userId}")
 User selectByPrimaryKey(Integer userId);
}

三、使用MyBatis Generator生成器自動生成實體類

MyBatis Generator是一個帶有擴展性的代碼生成器,它的運行依賴於MyBatis框架中的配置文件和Java程序,在生成代碼時可以引用資料庫中表的定義信息,生成Java代碼。MyBatis Generator在生成Java實體類時,可以自動將資料庫中的下劃線型式的列名轉化為Java中的駝峰命名方式,免去了我們手動編寫Java實體類的煩惱。

生成的Java實體類就像這樣:

public class Student {
 private Integer id;
 private String studentName;
 private String age;
 private String sex;
}

四、使用TypeHandler實現自定義轉換

TypeHandler是MyBatis中的一個類型處理器,主要負責JDBC類型與Java類型之間的轉換工作。當我們在進行SQL查詢時,Mybatis會將查詢結果集ResultSet中的數據類型根據Java的數據類型進行自動轉換。但是如果ResultSet中沒有直接支持的類型,MyBatis就會直接使用jdbcType進行轉換,而對於自定義轉換,TypeHandler就可以發揮作用。我們可以自定義實現一個TypeHandler,用來轉換下劃線類型的列名為駝峰類型的屬性名。

自定義TypeHandler可以繼承BaseTypeHandler進行實現,然後重寫 setParameter() 和 getResult() 方法。具體代碼如下:

public class CamelNameTypeHandler extends BaseTypeHandler {
    // 為 SQL 設置參數,下劃線類型轉換為駝峰類型
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
      	ps.setString(i, parameter);
    }
  
    // 根據列名,取得下劃線類型的值,將其轉為駝峰類型,再映射到實體類中
    @Override
    public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
        return toCamelName(rs.getString(columnName));
    }
  
    // 同上,不過是根據下標
    @Override
    public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        return toCamelName(rs.getString(columnIndex));
    }
  
    // 同上,不過是根據存儲過程的結果
    @Override
    public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        return toCamelName(cs.getString(columnIndex));
    }
}

然後,我們需要在Mapper文件中進行配置,讓Mybatis能夠識別並調用這個自定義的TypeHandler。


    
    

五、結論

通過以上五點我們可以清楚的了解到如何通過配置文件中的設置,註解方式、自動生成器、自定義TypeHandler來解決Mybatis默認生成的SQL語句中下劃線型式的列名不符合Java開發規範的問題。同樣的,在實際的開發中,我們也可以結合以上方法進行具體的處理,提高開發效率,減少不必要的麻煩。

原創文章,作者:FUEQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138545.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FUEQ的頭像FUEQ
上一篇 2024-10-04 00:21
下一篇 2024-10-04 00:21

相關推薦

  • 理解Mybatis中的SQL Limit用法

    Mybatis是一種非常流行的ORM框架,提供了SQL映射配置文件,可以使用類似於傳統SQL語言的方式編寫SQL語句。其中,SQL的Limit語法是一個非常重要的知識點,能夠實現分…

    編程 2025-04-29
  • Mybatis-plus條件構造器

    一、可重用性 Mybatis-plus作為Mybatis的擴展工具,提供了豐富的功能讓開發更加高效便捷。其中之一的條件構造器可以幫助我們構建各種查詢條件,而且支持鏈式調用,非常適合…

    編程 2025-04-25
  • Mybatis中update if詳解

    一、if標籤的基本用法 在Mybatis中使用update語句更新資料庫表中的一條或多條數據,我們通常通過if標籤來動態生成update語句。if標籤的使用方法如下: <up…

    編程 2025-04-25
  • Mybatis批量插入操作

    一、基本概念 Mybatis是一種基於java的持久層框架,旨在幫助開發人員簡化資料庫操作。該框架提供了多種方式來執行資料庫操作,其中包括批量插入。批量插入是一種在單個事務中提交多…

    編程 2025-04-25
  • MyBatis如何防止SQL注入

    MyBatis是一款開源的持久層框架,它可以簡化Java應用程序中的數據持久化過程,並提供了許多有用的功能。然而,安全問題一直是Web應用程序的一大挑戰,其中最嚴重的問題之一是SQ…

    編程 2025-04-25
  • Mybatis-plus 日誌詳解

    一、日誌框架概述 1、什麼是日誌框架 日誌框架是一個用於管理日誌的工具,使用日誌框架可以幫助開發人員記錄程序運行時產生的信息、警告和錯誤消息。常用的日誌框架有log4j和logba…

    編程 2025-04-24
  • Mybatis Plus分頁失效問題及解決方案

    一、分頁失效的原因 Mybatis Plus是一款優秀的ORM框架,使用簡單方便。但是,在使用它進行分頁時,有時會出現分頁失效的問題,原因可能有以下幾個方面: 1、Mybatis …

    編程 2025-04-24
  • MyBatis.NET

    MyBatis.NET是一個優秀的.NET ORM框架,它將對象映射成為資料庫中的記錄,不需要編寫SQL語句,並具有良好的性能和靈活性。 一、簡介 MyBatis.NET集成了面向…

    編程 2025-04-23
  • Mybatis分頁查詢SQL詳解

    一、Mybatis分頁查詢介紹 Mybatis是一款優秀的持久層框架,支持動態SQL和參數映射等功能,而分頁查詢也是其中非常重要的功能之一。 分頁查詢是指將大量的數據按照需要的記錄…

    編程 2025-04-23
  • Mybatis的優點

    一、簡化SQL編寫 Mybatis是一種基於Java語言的持久層框架,可以避免傳統 JDBC 編程中,大量繁瑣的、重複的代碼,使得 SQL 語句的編寫更為簡單和方便。開發者只需要定…

    編程 2025-04-13

發表回復

登錄後才能評論