解決mybatis無法給帶有下劃線屬性賦值問題

mybatis無法給帶有下劃線屬性賦值問

1、配置問題

<!-- 是否開啟自動駝峰命名規則(camel case)映射, -->
<setting name="mapUnderscoreToCamelCase" value="true"/>

或者

//開啟駝峰映射
        bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);

mybatis配置文件設置瞭這項後,查詢出來的字段如果帶下劃線,那麼就會去掉下劃線,然後采用java駝峰規則。比如數據庫字段Parent_id,那麼查詢出來後,會轉為parentid,然後去實體類匹配對應的字段。 因為你實體類裡有下劃線,所以匹配不上。要麼采用resultMap 要麼禁用掉駝峰規則(不建議禁用)。如果不想改實體類的話,建議采用resultMap。

2、增加set方法轉換值的方式

原實體類

    public class demo {  
      private String user_name;  
      private Striing pass_word;       
      public String getPass_word(){  
           return pass_word;  
      }  
      public void setPass_word(String pass_word){  
           this.pass_word=pass_word;  
      }       
    }  

原sql

select user_name,pass_word from demo;

這句sql在數據庫可以查到數據,但是使用mybatis的實體類查詢就查不到瞭。

解決方法

在實體類中增加以下兩個set方法並把sql改為

select user_name as username,pass_word as password from demo;

使用實體類查詢數據庫實際上就是一個set的過程隻需要把每個屬性增加一個set方法就好瞭

    public void setUsernaem(String user_name){  
          this.user_name=user_name;  
     }  
     public void setPassword(String pass_word){  
          this.pass_word=pass_word;  
     }  

僅適用於不方便改實體類的情況

實體類中有下滑線字段無法賦值問題

實體類中有下滑線字段,mybatis無法賦值

  • 直接將實體類中的下劃線去掉
  • 返回值使用resultMap進行字段映射賦值

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: