1. 程式人生 > >mybatis中SQL塊使用/動態條件查詢

mybatis中SQL塊使用/動態條件查詢

<!-- 欄位 -->  
<sql id="field">  
    `id`,  
    `username`,  
    `password`  
</sql> 

使用:
<include refid="field"/> <pre name="code" class="java"><!-- 通過一個ID搜尋 -->  
<select id="getById" parameterType="int" resultType="UserPojo">  
    SELECT <include refid="field"/> FROM user WHERE id = #{id}  
</select>

或者 

<sql id="dynamicCondition">
		<if test="templateType != null"> AND r.template_type=#{templateType} </if>
		<if test="roleType != null"> AND r.role_type=#{roleType}  </if>
		<if test="trialId != null"> AND r.trial_id= #{trialId}  </if>
		<if test="status != null"> AND r.status = #{status}  </if>
		<if test="typeId != null"> AND r.type_id= #{typeId}  </if>
		<if test="keyWords != null"> AND r.org_name like #{keyWords}  </if>
		<if test="schoolType != null"> AND r.school_type = #{schoolType} </if>
		<if test="orgId != null "> AND r.org_id = #{orgId} </if>
		<if test="orgIdList != null "> AND r.org_id in (${orgIdList}) </if>
	</sql>

使用:
<select id="getCountyListByCityId" resultMap="reportVOMap" parameterType="map">
		select DISTINCT(r.org_id) ,r.org_name,r.view_url from tarea t 
		INNER JOIN report_divided_html_liususu r
		on t.id = r.org_id
		where t.pid  = #{areaId}
		<include refid="dynamicCondition" />
	</select>

或者:
<sql id="dynamicWhere">
		<where>
			<if test="@[email protected](id)"> AND id  =#{id} </if>
			<if test="@[email protected](orgId)"> AND org_id  = #{orgId}  </if>
			<if test="@[email protected](orgName)"> AND org_name  LIKE #{orgName}  </if>
			<if test="@[email protected](templateType)"> AND template_type  = #{templateType}  </if>
			<if test="@[email protected](roleType)"> AND role_type  = #{roleType}  </if>
			<if test="@[email protected](trialId)"> AND trial_id  = #{trialId}  </if>
			<if test="@[email protected](typeId)"> AND type_id  LIKE #{typeId}  </if>
			<if test="@[email protected](viewUrl)"> AND view_url  LIKE #{viewUrl}  </if>
			<if test="@[email protected](reportName)"> AND report_name  LIKE #{reportName}  </if>
			<if test="@[email protected](provinceId)"> AND province_id  =#{provinceId} </if>
			<if test="@[email protected](provinceName)"> AND province_name  = #{provinceName}  </if>
			<if test="@[email protected](cityId)"> AND city_id  =#{cityId} </if>
			<if test="@[email protected](cityName)"> AND city_name  LIKE #{cityName}  </if>
			<if test="@[email protected](countyId)"> AND county_id  =#{countyId} </if>
			<if test="@[email protected](countyName)"> AND county_name  LIKE #{countyName}  </if>
			<if test="@[email protected](generatedTime)"> AND generated_time  =#{generatedTime} </if>
			<if test="@[email protected](begingeneratedTime)"> AND generated_time  >=#{begingeneratedTime,jdbcType=TIMESTAMP} </if>
			<if test="@[email protected](endgeneratedTime)"> AND generated_time <![CDATA[ <#{endgeneratedTime,jdbcType=TIMESTAMP}]]> </if>
			<if test="@[email protected](generatedUserId)"> AND generated_user_id  =#{generatedUserId} </if>
			<if test="@[email protected](generatedUserName)"> AND generated_user_name  LIKE #{generatedUserName}  </if>
			<if test="@[email protected](releaseTime)"> AND release_time  =#{releaseTime} </if>
			<if test="@[email protected](beginreleaseTime)"> AND release_time  >=#{beginreleaseTime,jdbcType=TIMESTAMP} </if>
			<if test="@[email protected](endreleaseTime)"> AND release_time <![CDATA[ <#{endreleaseTime,jdbcType=TIMESTAMP}]]> </if>
			<if test="@[email protected](releaseUserId)"> AND release_user_id  =#{releaseUserId} </if>
			<if test="@[email protected](releaseUserName)"> AND release_user_name  LIKE #{releaseUserName}  </if>
			<if test="@[email protected](status)"> AND status  =#{status} </if>
			
		</where>
	</sql>
使用:
<select id="queryListCount" parameterType="map" resultType="Integer">
		select count(id) from report_divided_html 
		<include refid="dynamicWhere" />
	</select>



相關推薦

mybatisSQL使用/動態條件查詢

<!-- 欄位 --> <sql id="field"> `id`, `username`, `password` </sql> 使用:<include refid="field"/>

SpringBootExample的動態條件查詢

一、無匹配器的情況: Person person = new Person();person.setName("test");... Example<Person> ex = Example.of(person); //動態查詢personRepository.findAll(ex); pe

Mybatis plus一個框多條件查詢 SQL拼接

條件查詢 filter array ryu toc suse return 多條 pen 遇到多條件查詢時,只用框架自帶的方法搞不定,只能自己寫方法拼接 EntityWrapper<YcejShopEntity> wrapper = new EntityWra

Mybatis的update動態SQL語句 <trim></trim> 用法

color 單獨 null 多個 ride 逗號 myba 不用 log Mybatis Mapper中文件中 update時,需要set設置多個字段,有時逗號處理時,會報錯誤,所以會使用到<trim></trim> 使用trim就是為了刪掉最後

mybatissql語句查詢操作

java 拼接 tca 指定 lose pan 添加 fill test 動態sql where if where可以自動處理第一個and。   <!-- 根據id查詢用戶信息 --> <!-- public User findUse

mybatis動態條件查詢和翻頁查詢的例子

繼續測試動態查詢的語句和翻頁查詢語句。 Test3.java原始碼: package domain;          import java.io.IOException;   import java.io.Reader;   import java.util.H

mybatis動態條件查詢

如何動態查詢? 當我沒有接觸到mybatis的時候一般的條件查詢就是通過後臺來判斷引數分別執行不同的sql語句來得到我們想要的資料(反正我個人是這個樣子的,不知道你們是不是這個樣子啊),從剛開始對著mybatis的使用者手冊開始的時候到後來對動態條件查詢的描述

關於mybatis批量插入和批量查詢sql語句查詢

批量查詢 <select id="findJobInfoByIds" parameterType="java.util.List" resultType="jobInfoDO"> <include refid="jobinfo-select-c

第四章 PL/SQL 動態查詢語句和異常處理 練習題答案

動態執行SQL語句: 1、用PLSQL給emp新增dname列,然後更新這個列的資料; 異常和動態執行SQL部分: declare sql_stmt1 varchar2(200); –動態SQL語句 sql_stmt2 varchar2(200);

Mybatis的update動態SQL語句

Mybatis中的CRUD操作(增刪改查)中,簡單的SQL操作比較直觀,如查詢操作: <select id="findBySrcId" resultMap="entityRelationResultMap"> SELECT * FROM ENTITY_REL

Mybatissql語句的in查詢,一定要判斷null的情況

不嚴謹的寫法,可能會報錯:in (),這種情況不符合mysql的語法。    select from loanwhere LOAN_ID in <foreach item="item" index

mybatissql標籤、where標籤、foreach標籤用法

<sql id="query_user_where"> <!-- 如果 userQueryVo中傳入查詢條件,再進行sql拼接--> <!-- test中userCustom.username表示從userQueryVo讀取屬性值--> &l

常用mybatissql寫法

目錄   1.時間處理 2.in操作包含大於1000 3.oracle批量處理 4.orcle模糊查詢 (左模糊,全模糊) 1.時間處理 <if test="timeLimitStart != null and timeLimitEnd !=

MyBatis sql語句include標籤的使用

   <!-- 1.先定義用於select查詢公用抽取的列 -->     <sql id="columns">         id,name,sex,birth

spring jpa動態條件查詢並分頁

@GetMapping("/api/listPage") @ResponseBody public Map<String, Object> listPage(@RequestParam(value = "pageNumber", defaultV

Mybatis Oracle 的拼接模糊查詢

一、結論 這裡先給大家看一下結論 Oracle 中,拼接模糊查詢的正確寫法 SELECT A.USER_ID, A.USER_NAME FROM T_USER A AND A.

MybatisSQL效能優化注意事項

Mybatis SQL效能調優 1.  Mapper層引數為Map,由Service層負責過載     Mapper由於機制的問題,不能過載,引數一般設定成Map,但這樣會使引數變得模糊,如果想要使程式碼變得清晰,可以通過service層來實現過載的目的,對外提

mybatissql語句的#和$

一直寫mybatis的sql語句,當時想只要實現它的功能就行了,也沒過多的去理解; 首先我們大家都知道#和$都是用來傳值的,但他們之間是怎麼區分的呢?什麼時候用哪個好呢? 1、#將傳入的資料都當成字串

MyBatis sql標籤和include標籤的使用

<sql> 和 <include> <sql>用來封裝SQL語句, <include>來呼叫 程式碼片段:<sql id="select"&g

mybatissql語句使用大於小於號方法

目的: mapper檔案中如何使用大於小於號 例項:查詢語句 <select id="queryInfo" parameterType="com.Time" resultType