您好,登錄后才能下訂單哦!
這篇文章主要介紹“Mybatis無法獲取帶有下劃線前綴字段的值怎么辦”,在日常操作中,相信很多人在Mybatis無法獲取帶有下劃線前綴字段的值怎么辦問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mybatis無法獲取帶有下劃線前綴字段的值怎么辦”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
今天下面,把幾張表里的字段都加了前綴,如 article_id,article_title,acticle_content,article_status。
然后通過Mybatis-generator 生成了 po和mapper,替換后。
原本正常的網(wǎng)頁,這下數(shù)據(jù)全沒了。當(dāng)時(shí),很淡定,推測可能是哪里寫錯(cuò)了,改改就好。但是就是這改改,改了幾個(gè)小時(shí)都沒成功,調(diào)試了很久。打斷點(diǎn)一直是顯示:All Element are null
后來,Ctrl+Z 撤銷所有修改,并把字段的前綴全部去掉。這時(shí)候,突然想到,之前有一次就是因?yàn)樽侄渭恿讼聞澗€導(dǎo)致什么報(bào)錯(cuò),當(dāng)時(shí)為了省事,就全改為沒有下劃線的。同時(shí)也關(guān)注到 Mybatis-generator 會把帶有下劃線的字段按照駝峰法命名,會不會是這里呢?
這時(shí)候,試了一下不帶下劃線和帶下劃線字段混合的表。
帶有下劃線的字段,都無法獲取值,不帶的則可以。
最終百度找到了解決方案。
這里感謝一下 valder fields
在mybatis-config.xml文件里配置
<configuration> <!-- 全局配置 --> <settings> <!--允許 JDBC 支持自動生成主鍵--> <setting name="useGeneratedKeys" value="false"/> <!--是否開啟自動駝峰命名規(guī)則(camel case)映射,即從經(jīng)典數(shù)據(jù)庫列名 A_COLUMN 到經(jīng)典 Java 屬性名 aColumn 的類似映射。 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> </configuration>
<!-- 是否開啟自動駝峰命名規(guī)則(camel case)映射, --> <setting name="mapUnderscoreToCamelCase" value="true"/>
或者
//開啟駝峰映射 bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
mybatis配置文件設(shè)置了這項(xiàng)后,查詢出來的字段如果帶下劃線,那么就會去掉下劃線,然后采用java駝峰規(guī)則。比如數(shù)據(jù)庫字段Parent_id,那么查詢出來后,會轉(zhuǎn)為parentid,然后去實(shí)體類匹配對應(yīng)的字段。 因?yàn)槟銓?shí)體類里有下劃線,所以匹配不上。要么采用resultMap 要么禁用掉駝峰規(guī)則(不建議禁用)。如果不想改實(shí)體類的話,建議采用resultMap。
原實(shí)體類
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在數(shù)據(jù)庫可以查到數(shù)據(jù),但是使用mybatis的實(shí)體類查詢就查不到了。
解決方法
在實(shí)體類中增加以下兩個(gè)set方法并把sql改為
select user_name as username,pass_word as password from demo;
使用實(shí)體類查詢數(shù)據(jù)庫實(shí)際上就是一個(gè)set的過程只需要把每個(gè)屬性增加一個(gè)set方法就好了
public void setUsernaem(String user_name){ this.user_name=user_name; } public void setPassword(String pass_word){ this.pass_word=pass_word; }
到此,關(guān)于“Mybatis無法獲取帶有下劃線前綴字段的值怎么辦”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。