mybatis?對于生成的sql語句?自動加上單引號的情況詳解
對于生成的sql語句 自動加上單引號的情況
mybatis是這樣的,如果表的字段跟系統(tǒng)字段沖突,寫sql語句的時候必須得加上單引號,這樣才會區(qū)分
mySQL中replace的用法
1.replace into
replace into table (id,name) values(‘1',‘a(chǎn)a'),(‘2',‘bb')
此語句的作用是向表table中插入兩條記錄。如果主鍵id為1或2不存在
就相當于
insert into table (id,name) values(‘1',‘a(chǎn)a'),(‘2',‘bb')
如果存在相同的值則不會插入數(shù)據(jù)
2.replace(object,search,replace)
把object中出現(xiàn)search的全部替換為replace
select replace(‘www.baicai.net',‘w',‘Ww')—>WwWwWw.baicai.net
例:把表table中的name字段中的aa替換為bb
update table set name=replace(name,‘a(chǎn)a',‘bb')
mybatis中IFNULL(P1,P2)函數(shù)的用法
select md.valueofdouble, md.periodcode from meas_data md WHERE objectcode="YQ" AND datatime="2017-5-25 00:00:00" AND measurementcode="PI_DRFDL
select md.valueofdouble, IFNULL(md.periodcode,0) from meas_data md WHERE objectcode="YQ" AND datatime="2017-5-25 00:00:00" AND measurementcode="PI_DRFDL"
總結:
1、IFNULL(P1,P2)如果P1不為空,則返回值為P1;P1為NULL,則返回為P2;P2有點類似替補球員;
2、注意,IFNULL只是針對局部字段的替換;如果整個結果查出來都是空,則不能使用IFNULL(P1,P2)
select md.valueofdouble, md.periodcode from meas_data md WHERE objectcode="YQ" AND datatime="2017-5-25 00:00:01" AND measurementcode="PI_DRFDL"
select md.valueofdouble, IFNULL(md.periodcode,0) from meas_data md WHERE objectcode="YQ" AND datatime="2017-5-25 00:00:01" AND measurementcode="PI_DRFDL"
mybatis單引號字母邏輯處理的一個坑
記錄一個mybatis的坑,test中單個字母單引號包括會處理成Object,默認為數(shù)值,在與字符串雙等時或者調用equals時會過不去,需要加上toString()先進行轉換
原因分析
因為mybatis是用OGNL表達式來解析的,所以在OGNL的表達式中,'A’會被解析成字符,同時java又是強類型的,char 和 一個string 是不等的,所以if標簽中的sql不會被解析。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java通過jacob實現(xiàn)office在線預覽功能
這篇文章主要為大家詳細介紹了java通過jacob實現(xiàn)office在線預覽功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08Java實現(xiàn)冒泡排序算法及對其的簡單優(yōu)化示例
這篇文章主要介紹了Java實現(xiàn)冒泡排序算法及對其的簡單優(yōu)化示例,冒泡排序的最差時間復雜度為O(n^2),最優(yōu)時間復雜度為O(n),存在優(yōu)化的余地,需要的朋友可以參考下2016-05-05