解決mybatis無法給帶有下劃線屬性賦值問題
mybatis無法給帶有下劃線屬性賦值問
1、配置問題
<!-- 是否開啟自動駝峰命名規(guī)則(camel case)映射, --> <setting name="mapUnderscoreToCamelCase" value="true"/>
或者
//開啟駝峰映射 ? ? ? ? bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
mybatis配置文件設置了這項后,查詢出來的字段如果帶下劃線,那么就會去掉下劃線,然后采用java駝峰規(guī)則。比如數據庫字段Parent_id,那么查詢出來后,會轉為parentid,然后去實體類匹配對應的字段。 因為你實體類里有下劃線,所以匹配不上。要么采用resultMap 要么禁用掉駝峰規(guī)則(不建議禁用)。如果不想改實體類的話,建議采用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進行字段映射賦值
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
IDEA運行導入的javaweb項目tomcat正常,但是運行失敗404問題
這篇文章主要介紹了IDEA運行導入的javaweb項目tomcat正常但是運行失敗404問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07SpringBoot整合JavaMail實現(xiàn)發(fā)郵件的項目實踐
本文主要介紹了SpringBoot整合JavaMail實現(xiàn)發(fā)郵件的項目實踐,詳細闡述了使用SpringBoot和JavaMail發(fā)送郵件的步驟,具有一定的參考價值,感興趣的可以了解一下2023-10-10原因分析IDEA導入Spring-kafka項目Gradle編譯失敗
這篇文章主要為大家介紹分析了IDEA導入Spring-kafka項目Gradle中編譯失敗原因及解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-02-02