• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SSM框架實戰系列之十二_MyBatis框架之動態查詢

    標簽: spring  springmvc  mybatis

      SSM框架實戰系列之十二_MyBatis框架之動態查詢


      在上一講中我們提到了MyBatis中的查詢。

      在查詢時,可以通過parameterType指定傳入參數的類型。

      例如根據id查找對象時,可以將parameterType設置為java.lang.Integer,表示傳入一個整數類型的id。


      有時,在查詢中需要傳入多個條件,例如:



      在上圖中,可以根據用戶名查詢,可以根據真實姓名查詢,還可以只顯示啟用中的用戶,因此查詢條件有多個。

      這種情況下,就要考慮一下怎么做了。


      方案一、使用注解實現參數綁定

      DAO接口代碼:

      List<User> listByCondition(@Param("name") String name, @Param("realName") String realName, @Param("isUse") boolean isUse);


      xml代碼:

    	<select id="list" resultMap="BaseResultMap">
    		select user_id,
    		<include refid="dataFields" />
    		from tbl_user
    		where is_del = 0
    		<if test="name != null and name != ''">
    			and user_name like concat(concat('%', #{name}), '%')
    		</if>
    		<if test="realName != null and realName != ''">
    			and real_name like concat(concat('%', #{realName}), '%')
    		</if>
    		<if test="isUse">
    			and is_use = 1
    		</if>
    	</select>

      由于在DAO接口中使用注解,將入參綁定到@Param注解的同名參數上,所以在xml代碼中,就可以使用#{參數名}的方法取得各個參數。

      這種情況下,select標簽上也不用聲明parameterType了。


      方案二、使用map封裝參數

      DAO接口代碼:

      List<User> listByCondition(HashMap map);


      xml代碼:

    	<select id="list" parameterType="hashmap" resultMap="BaseResultMap">
    		select user_id,
    		<include refid="dataFields" />
    		from tbl_user
    		where is_del = 0
    		<if test="name != null and name != ''">
    			and user_name like concat(concat('%', #{name}), '%')
    		</if>
    		<if test="realName != null and realName != ''">
    			and real_name like concat(concat('%', #{realName}), '%')
    		</if>
    		<if test="isUse">
    			and is_use = 1
    		</if>
    	</select>

      這種方法是將參數先放入哈希表中,然后統一傳遞給DAO方法。

      xml文件中,需要指定parameterType="hashmap",hashmap是MyBatis框架已經配置好的類型,可以直接使用。


    版權聲明:本文為hanhf原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/hanhf/article/details/78748548

    智能推薦

    SSM框架實戰系列之十三_H-ui框架之一

      SSM框架實戰系列之十三_H-ui框架之一   對于很多Java程序員來說,讓他們寫代碼是沒問題,但要他們做出一個相對好看的頁面,那是相當地困難。   那么一些快速開發框架對于Java程序員來說無疑是一個福音了。   H-ui框架就是這樣的一個快速開發框架,它是由國人開發的,基于Bootstrap框架并整合了一些常用Web組件的一個快速開發框架。   使用H-ui框架,不需要程序員寫界面樣式,...

    SSM框架學習筆記之mybatis——簡介

    課程:https://www.bilibili.com/video/av38513367 為什么要學習框架? 所謂框架,即framework。其實就是某種項目的半成品,里邊有很多功能組件可供你使用來完成自己的項目。 框架可以幫助我們完成底層基礎工作,程序員只需要關注項目業務本身。 什么是SSM框架? SSM框架即指Spring+SpringMVC+MyBatis的簡稱 SSM框架的組成 Sprin...

    SSM框架之MyBatis緩存機制

    一級緩存的原理 同一個SqlSession對象多次執行完全相同的SQL語句時,在第一次執行完后,MyBatis會自動將查詢結果寫入到一級緩存,這樣,當下次執行相同的查詢語句時,就不用再次提交SQL語句到數據庫,直接從緩存中拿到數據。 當執行插入,更新,刪除操作后,緩存會清空,以防止誤讀。 一級緩存不需要手動設置。 例如通過學號sid查詢學生信息: 二級緩存的原理 當開啟二級緩存后,MyBatis以...

    SSM框架之---Mybatis的學習筆記

    MyBatis學習筆記 Mybatis和hibernate不同,它是Ibatis的進化,它不完全是一個ORM框架,因為MyBatis需要程序員自己編寫Sql語句,不過mybatis可以通過XML或注解方式靈活配置要運行的sql語句,并將java對象和sql語句映射生成最終執行的sql,最后將sql執行的結果再映射生成java對象。 Mybatis學習門檻低,簡單易學,程序員直接編寫原生態sql,可...

    SSM框架之Mybatis入門(一)

    SSM框架之Mybatis入門(一) 何為框架: ? 框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;另一種 定義認為,框架是可被應用開發者定制的應用骨架。前者是從應用方面而后者是從目的方面給出的定義。簡而言之,框架其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別 人搭好的舞臺,你來做表演。而且,框架一般是成熟的,...

    猜你喜歡

    java內功修煉基礎篇之---反射

    引言: 說來實在慚愧,工作四年,學的東西比較雜,以至于聊起天時,連很多Java的一些核心知識都說不清道不明,于是決心將Java的一些知識進行鞏固一下 如果有想在Java這條路上走的更遠的朋友,建議看看這篇文章,可能對你會有一點小小的幫助  -- Java成神之路 今天要來講講的就是Java的一個常用知識點 -- 反射 反射在Java這門語言中是非常核心的一個概念,我們學習Jav...

    矩陣連乘——動態規劃

    問題 思路:        ...

    19-springboot整合mybaits

    新建springboot項目 druid學習地址 https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter   1.引入依賴 application.yml和application.properties區別?   yml文件的好處,天然的樹狀結構,一目了然,實質上跟properties是差不多的...

    LINUX從零開始——SERVICES(系統&服務管理進階)——Day4 [緩存DNS、Split分離解析、電子郵件通信、Web服務器項目實戰]

    一、環境準備 1.還原快照,開啟虛擬機A與虛擬機B,以root用戶登錄 二 、環境設置 1.防火墻設置: 虛擬機A [root@A ~]# firewall-cmd --set-default-zone=trusted [root@A ~]# firewall-cmd --get-default-zone 虛擬機B [root@B ~]# firewall-cmd --set-default-zo...

    學習筆記之——Opencv視頻處理模塊

    視頻信號是重要的視覺信息來源。視頻由一系列圖像構成,這些圖像稱為幀。幀以固定的時間間隔獲取(稱為幀速率,通常用幀/秒表示)。大多數計算機視覺方面的應用都是基于視頻來處理的,為此本博文作為Opencv視頻處理模塊的學習筆記~ 幀的數據類型也是Mat。 讀取視頻序列。要從視頻序列讀取幀,只需創建一個cv::VideoCapture類的實例,然后再一個循環中提取并顯示視頻的每幀,如下面代碼所示: 具體分...

    精品国产乱码久久久久久蜜桃不卡