實際需求
1
2
3
4
5
6
|
< if test = "computationRule == '1'" > FROM app_sz_bbb a </ if > < if test = "computationRule == '2'" > FROM app_ccc a </ if > |
這種情況不生效,
原因:mybatis是用OGNL表達式來解析的,在OGNL的表達式中,'0'會被解析成字符,java是強類型的,char 和 一個string 會導致不等,所以if標簽中的sql不會被解析。
先說怎么解決
三種:
加 .toString()
1
2
3
4
5
6
|
< if test = "computationRule == '1'.toString()" > FROM app_sz_bbb a </ if > < if test = "computationRule == '2'.toString()" > FROM app_ccc a </ if > |
choose when 標簽代替
1
2
3
4
5
6
7
8
|
< choose > < when test = "computationRule == '1'" > FROM app_sz_bbb a </ when > < otherwise > FROM app_sz_bbb a </ otherwise > </ choose > |
單引號 換成雙引號
1
2
3
4
5
6
|
< if test = 'computationRule == "1"' > FROM app_sz_bbb a </ if > < if test = 'computationRule == "2"' > FROM app_ccc a </ if > |
MyBatis 中if 標簽 判斷字符串不生效
異常sql 的mapper 文件:
1
2
3
4
5
6
|
< if test = "isBound != null and isBound !='' and isBound == '1'" > and box_sid is not null </ if > < if test = "isBound != null and isBound !='' and isBound == '2'" > and box_sid is null </ if > |
正確sql 的mapper 文件
1
2
3
4
5
6
|
< if test = "isBound != null and isBound !='' and isBound == '1'.toString()" > and box_sid is not null </ if > < if test = "isBound != null and isBound !='' and isBound == '2'.toString()" > and box_sid is null </ if > |
到此這篇關于mybatis if標簽判斷不生效的解決方法的文章就介紹到這了,更多相關mybatis if標簽判斷不生效內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/qq_43167632/article/details/110189333