1. 程式人生 > >mybatis避免Where 空條件的尷尬

mybatis避免Where 空條件的尷尬

<select id="findActiveBlogLike" resultType="Blog">
 SELECT * FROM BLOG
 WHERE
 <if test="state != null">
 state = #{state}
 </if> 
</select>

如果state引數為空時,最終生成SQL語句為

 SELECT * FROM BLOG
 WHERE

執行會出錯,當然,你可以在where 後加一個1=1,改成
<select id="findActiveBlogLike" resultType="Blog">
 SELECT * FROM BLOG
 WHERE 1=1
 <if test="state != null">
 and state = #{state}
 </if> 
</select>
但是這個做法不太“環保”(畢竟引入了一個垃圾條件),其實只要改成<where>...</where>即可
<select id="findActiveBlogLike" resultType="Blog">
 SELECT * FROM BLOG
 <where>
     <if test="state != null">
         and state = #{state}
     </if>
 </where> 
</select>



相關推薦

mybatis避免Where 條件尷尬

<select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE <if test="state != null"> state = #{state} &

mybatis-plus where 拼接條件

環境宣告: springboot : 2.0.4 mybatisplus-spring-boot-starter: 1.0.5 問題描述:需要在sql 中呼叫 mysql 的函式,並且 還需要根據條件查詢。使用 mybatis-plus的 eq 方法無法實現,原

怎麼使用mybatis 動態where 條件

怎麼使用mybatis 動態where 條件 相信很多人都知道 mybatis 動態where條件 是怎麼寫的 ,只需要這樣 <where> <if > and id = #{id} </if> </w

mybatis中陣列值查詢條件

原:<if test="payOrdVo.bkRtRmkArr != null and payOrdVo.bkRtRmkArr != ' ' "> and <foreach item="item" index="index" collection="pa

MySQL left join操作中 on與where放置條件的區別

合成 可見 找到 需要 兩張 oca aaa rip 多個 優先級 兩者放置相同條件,之所以可能會導致結果集不同,就是因為優先級。on的優先級是高於where的。 1 1 首先明確兩個概念: LEFT JOIN 關鍵字會從左表 (table_name1) 那裏返回

thinkphp 5 where 組合條件map數組or

blog 數組 lec ray ids style for subst 代碼 if($inviterId>0) { $arr = Db::table("tablename")-> where("pid=$inviterId")-&g

mybatis中的多條件查詢

app commit out con turn list 接口 system map集合 使用Map集合和索引號 接口: /** * 多條件查詢Map集合 * @param map * @return */public List<Student> fi

MybatisWHERE和IF動態

-- image rod cat return app div 如果 pri mapper.xml: <!--查詢套餐產品 --> <select id="queryComboProducts" resultType="com.runmi

JDBC WHERE子句條件實例

step drive cor nts ast 物理 function val extra 在本教程將演示如何在JDBC應用程序中,從數據庫表中查詢數據記錄, 在查詢選擇記錄時使用WHERE子句添加其他條件。 在執行以下示例之前,請確保您已經準備好以下操作: 具有數據庫管理

Mybatis學習總結--------Mybatis <where>標簽 (九)

總結 yii 定義 bat 問題 通過 ide div ike <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE <if

Mybatis學習總結--------Mybatis <where>標籤 (九)

  <select id="findActiveBlogLike" resultType="Blog"> SELECT * FROM BLOG WHERE <if test="state != null"> state =

mybatis <where><if>標籤的使用

        <where>             <if test="ACZ001 != null and ACZ001!=''">

mybatis <where><if>標簽的使用

test mybatis where tis myba ati 使用 != not <where> <if test="ACZ001 != null and ACZ001!=‘‘">ACZ001=#{ACZ00

Mybatis-Plus的常用條件方法

mybatis-plus可呼叫的方法: 查詢方式            說明 setSqlSelect    設定 SELECT 查詢欄位 where &nb

ORACLE中查詢語句的執行順及where部分條件執行順序測試 Oracle中的一些查詢語句及其執行順序 Select 語句執行順序以及如何提高Oracle 基本查詢效率

Oracle中的一些查詢語句及其執行順序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查詢條件:1)LIKE:模糊查詢,需要藉助兩個萬用字元,%:表示0到多個字元;_:標識單個字元。2)IN(list):用來取出符合列表範圍中的資料。3)NOT I

JAVA中集合的判條件

java程式中,我們在判斷列表是否為空的時候,往往要這樣寫 if (attackIpList != null && attackIpList.size() > 0){ //todo } 為什麼既要判斷list不為null,又要判斷size>0呢,豈不是多此

(五)springboot + mybatis plus強大的條件構造器queryWrapper、updateWrapper

註明:上篇文章介紹了springboot+mybatis-plus通用CRUD的用法,這篇文章我們來介紹一下mybatis-plus強大的條件構造器。mybatis-plus的版本為最新版3.0.3 。條件構造器咱們講述queryWrapper和updateW

python的csv檔案讀寫及避免出現行的方法

使用列表生成csv >>> import csv >>> keys=['a','b','c','d'] >>> data=[[1,2,3,4],[5

SpringCloud+MyBatis的時間查詢條件

一般以時間為條件查詢的主要分為2種: 這裡以具體到某天為例(2018-12-04),前端或api傳值一般只是按天傳值(2018-12-03至2018-12-04); 而後臺程式碼處理和與資料庫中日期存的值進行比較的時候,往往會精確到資料庫的date格式的最小精度(時間戳)。 前端日期

Mysql where '字串' 條件細節

今天小山(本文作者,後面我就這樣稱呼自己了)在群裡遇見一個哥們問一個sql問題(為什麼where 條件看起來沒生效),無論帖子還是論壇並沒有詳細的介紹,那麼小山跟大家來詳細剖析一下這個問題 juhao 本文針對: select * from table where '字串'