1. 程式人生 > >使用mybatis的一個坑

使用mybatis的一個坑

剛剛在使用mybatis寫sql,一開始我定義了一個介面:

List<Video> getVideosByCondition(@Param("keyword") String keyword, @Param("status") List<String> status,
            @Param("deptId") Integer deptId, @Param("userId") String userId,
            @Param("categoryId") Integer categoryId, @Param("isDeleted") String isDeleted,
            @Param("index") Integer index, @Param("size") Integer size);

然後xml的寫法:

        <select id="getVideosByCondition" resultType="com.ovp.domain.Video">
            select * from video
	    where 1=1
	    <if test="keyword != null and keyword.length()>0">
	      and ( title like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%' )
	        or tag1 like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%' )
	        or videoId = #{keyword,jdbcType=VARCHAR}
	      )
	    </if>
	    <if test="status != null and status.size()>0">
	       and status in
	       <foreach item="item" collection="status" separator="," open="(" close=")" index="index">  
		      #{item,jdbcType=VARCHAR}
		    </foreach> 
	    </if>
	    <if test="deptId != null ">
	       and deptId=#{deptId,jdbcType=INTEGER}
	    </if>
	    <if test="userId != null and userId.length()>0">
	    	and userId = #{userId,jdbcType=VARCHAR}
	    </if>
	    <if test="categoryId != null">
	    	and categoryId=#{categoryId,jdbcType=INTEGER}
	    </if>
	    <if test="isDeleted != null and isDeleted.length()>0">
	    	and deleted=#{isDeleted,jdbcType=VARCHAR}
	    </if>
	     order by createdTime DESC
	     <if test="index!=null and size!=null">
	     limit #{index,jdbcType=INTEGER}, #{size,jdbcType=INTEGER}
	     </if>
	</select>

介面傳遞的index和size分別是分頁的引數。

然後查詢結果一直有誤,傳遞的引數也一直查不出問題。後來列印了輸出的sql,發現,index的值一直是1。。。

排查來排查去,最後覺得是xml的問題。終於發現foreach裡也有index。

而且當我的status的值是null時,查詢沒有任何問題。測試了一下發現了原因

我在使用foreach的時候,由於元素有2個,所以index是從0到1賦值,也就是說最後一個迴圈,index的值時1,

到了下面的limit語句,index其實是複用了上面的變數,所以值仍然是1。所以就一直有問題。。。。

最後我換了index變數為其他值。問題解決。

相關推薦

mybatis 批量更新操作的一個

``` <update id="batchUpdateAlbumRecordContentIds" parameterType="java.util.List"> <foreach collection="list" item="record" ind

Mybatis的TypeHandler的一個

有一個需求是自動掃描專案中的列舉類,然後註冊列舉處理器,遇見了這個問題:列舉也都掃描到了,也註冊到configuration當中去了,但是,查詢的時候還是報錯了! mapper.xml: <resultMap id="PersonMap" type="Person"

使用mybatis一個

剛剛在使用mybatis寫sql,一開始我定義了一個介面: List<Video> getVideosByCondition(@Param("keyword") String keyword, @Param("status") List<String&g

Mybatis語法錯誤的一個

前言         為什麼說是一個坑呢?是因為這個錯誤實在是比較難出現,只有在特定的場合才會出現,是關於Mybatis語法錯誤的一個問題,說到底,其實就是一個小逗號的事情。 問題描述         先來看一段sql: <update id=

mybatis中的一個:if判斷如果型別是integer型別,值為0,判斷條件不成立

比如說這樣的,policyQueryVo.state 是一個integer型別,值為0,傳過來之後if判斷不成立直接跳過了...如果去掉了判斷空串的話就沒問題了,但是擔心傳過來是個空串結果條件也成立,所以直接添加了個值為0條件成立,因為這裡直接新增這麼一句就行了.所以最後寫成

訪問進程環境變量environ時的一個

sde strcmp clas 執行 程序 表示 pri 而且 ptr 在unistd.h中定義了變量char **environ;來表示當前所有環境變量,一般來說訪問特定環境變量可以用getenv,但是想遍歷所有環境變量就得使用environ。 即在程序內全局聲明exte

MVC Json方法裏的一個

hat intern 字符串處理 asp.net 其它 hide spa xxx hellip MVC Controller類下面有這樣一個方法 // // Summary: // Creates a Syste

踩到Framework7 Photo Browser 的一個

value nbsp 永遠 元素 prop point 手冊 poi row 最近在做的項目用了Framework7前端框架,功能確實比較強大!但這兩天遇到一個坑,希望我的這點收獲能給遇到這個問題的朋友一點幫助。 在使用Photo Browser 的時候,圖片下方想放一個

從ftp上傳文件到hadoop的一個

hadoop執行如下命令,發現報錯[[email protected]/* */ ~]$ hadoop distcp ftp://ftp01:[email protected]/* *//test hdfs:///user/data Error: java.net.SocketExce

android studio中配置X5 webview時的一個

這也 default ips build 找到 沒有 androi lte sed 在接入X5的第二步中,需要配置so文件,這裏說一下遇到的坑 1. 需要把demo下載回來,不然你找不到so文件,找到so文件後放到自己相對應的目錄下邊,自己裏面那個目錄也沒有,所以和文件夾一

使用selenium時碰到的某一個

mon usr gsm 比較 a20 oar lnl bug tgz 如圖: 不明所以,完全不知道什麽情況,於是開始排除 1、瀏覽器 2、代碼 3、元素定位(其實跟這沒關系) 然後都不是!!! 原來是selenium版本問題!!! 原來我用的是3.4.3版本的,不行,代

關於UWP數據綁定的一個 x:bind修改為binding

bin markup led brush mar resource mic reg 一個 <Page x:Class="AlbumCoverMatchGame.MainPage" xmlns="http://schemas.microsoft.com/wi

使用SpringBoot的yml文件配置時踩的一個

node ddp parsing ica listener bsp ring com dac 問題描述:使用SpringBoot整合redis進行yml配置的時候,啟動工程報錯,提示加載application.yml配置文件失敗: 17:18:27.430 [main]

spring boot整合mybatis之c3p0的詳細配置

text context ati reat source ast type fig oot 項目地址:https://gitee.com/zhangjunqing/spring-boot/tree/master/springboot-mybatis-notice 本人在c3

efcore遇到的一個

ace font derby hit 12px 上線 lin core 原來 最近轉到EFCore做項目,發現了一個坑,在項目上線後發現隨著數據增加查詢速度越來越慢,發現原來是進行了全表查詢 原來的查詢 var orderCollect = (from a in ct

Java 字符串Split方法的一個

static pub view div nbsp lang ray 負數 pri java字符串的split,只傳一個參數,後面空白的字符串會被忽略: public static void main(String[] args) { String st

mybatis記錄

找不到 map myba body 技術 property .com img class 1. mapper xml resultMap 中定義 property 時不能出現空格 否則會出現反射錯誤,找不到 do 對應的 set 方法 mybatis 排坑記錄

在模態框(Modal)中使用UEditor全屏顯示的一個

hub efi 粘貼 之前 ttr fine edit style sse   根據這個問題很簡單就能查到一些文章明確說明了解決問題的方法,就是如下一段代碼: var isModal = false; //判斷該dom是否為modal var classes = $(co

命令行 base64 命令的一個

ech echo 換行 log base64 spa span 原來 client 0x00 linux 命令行裏有一個base64命令,很常用,很方便。 比如要解碼一個字符串,以往我都是直接 echo "xxx" | base64 -d 這樣,一直都沒什麽問題,直到今天

mongodb count 導致不正確的數量(mongodb count 一個

ride getc 官網 foreach arrays 圖片 client tab tor https://www.cnblogs.com/Kellana/p/5844919.html 在mongodb 集群中,if 存在orphaned documents