MyBatis-plus數(shù)據(jù)庫字段排序不準(zhǔn)確的解決
MyBatis-plus數(shù)據(jù)庫字段排序不準(zhǔn)確
今天用mybatis-plus進(jìn)行開發(fā)的時候遇到一個問題,就是用mysql自帶的排序進(jìn)行數(shù)據(jù)排序的時候,發(fā)現(xiàn)排序的數(shù)據(jù)不準(zhǔn)確。
例如:12還沒有8,4,2大,這就很郁悶了
后來在網(wǎng)上查了一下,原來是自己給自己挖的坑,數(shù)據(jù)庫排序字段用的是varcher類型,而排序函數(shù)針對的是number類型。
解決方案
對于mysql和oracle都實用
- order by 字段+0
- order by 字段*1
因為用的是mybatis-plus,不想寫sql怎么辦呢?那就用自帶的排序函數(shù)嘍。排序字段直接"+1"就Ok了
//倒敘 queryWrapper.orderByDesc("visit_num+1");
Mybatis-plus遇到的坑
1. 數(shù)據(jù)庫映射枚舉
不能是tinyint(1),tinyint(1)默認(rèn)是boolean類型
2. 自增主鍵
數(shù)據(jù)庫設(shè)置了自增主鍵后,po類需要增加@TableId(type = IdType.AUTO),或者不要id字段才能生效。
否則會自動分配id,如下圖:
3. mybatis嵌套查詢
子查詢中需要查出唯一標(biāo)識
4. 用updateWrapper的update做更新操作
更新時間沒有更新問題
數(shù)據(jù)庫updateTime設(shè)置了 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,仍然不會自動更新時間,需要手動設(shè)置當(dāng)前時間,或者用updateById方法
5. 使用lambaQuery時
參數(shù)為空會帶入到SQL中(branch_code = null),需要手動過濾,或者在eq中增加條件
6. Integer判斷為空
7. 基礎(chǔ)類型的判斷
customerIssueFlag定義的是String類型,值是Y or N
8. 事務(wù)
9. mybatis 配置了多個數(shù)據(jù)庫
除了主數(shù)據(jù)源對應(yīng)的mapper.java,都不能加 @Mapper 注解,否則會報找不到
由于使用了mybatis-plus的包,默認(rèn)自動全包掃描@Mapper注解。mybatis掃描生成的Mapper比其他自定義配置的bean生成對應(yīng)的Mapper對象塊,而自定義的mybatis@MapperScan后掃描,Dao Bean已經(jīng)生成了,無法再指定數(shù)據(jù)源進(jìn)行注入了。
所以如果在 @Configrution注解類中指定了掃描類,就不用再加 @Mapper注解了
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot啟動腳本start.sh和停止腳本 stop.sh的詳細(xì)教程
這篇文章主要介紹了springboot啟動腳本start.sh和停止腳本 stop.sh的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08在RedHat系統(tǒng)上安裝JDK與Tomcat的步驟
這篇文章主要介紹了在RedHat系統(tǒng)上安裝Java與Tomcat的步驟,同樣適用于CentOS等RedHat系的Linux系統(tǒng),需要的朋友可以參考下2015-11-11解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題
這篇文章主要介紹了解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07