1. 程式人生 > >MyBatis 和 ibatis的動態SQL語句配置符號,不相容大於號、小於號等特殊符號問題

MyBatis 和 ibatis的動態SQL語句配置符號,不相容大於號、小於號等特殊符號問題

在XML對映SQL的檔案中,很多情況下會使用到大於號、小於號等特殊符號,這時候如果不進行控制是無法編譯通過的,這時候需要用到<![CDATA[  ]]>符號進行說明,將此類符號不進行解析,還有一種解決方法就是使用轉移字元,如,案例2,其實,這個問題不止在MyBatis上通用,而是它通用於任何XML的檔案中使用,比如Hibernate、Wabacus、Spring等等等等配置檔案中,只要是XML檔案就行,此類問題在以後的工作中,經常使用。

案例1程式碼

<select id="findAllKiaAnalysisByCondition" parameterType="map" resultType="KiaAnalysis">
	select * from (select unitname, to_char(rdate,'yyyy-MM') rdate,keytype, scope from KIAANALYSIS 
		<where>
			<if test='startDate!="%null%"'> and rdate >= to_date(#{startDate},'yyyy-mm')</if>
			<if test='endDate!="%null%"'>
				<![CDATA[ and rdate <= to_date(#{endDate},'yyyy-mm') ]]>
			</if>
			<if test='unitname!="%null%"'>and unitname=#{unitName}</if>
		</where>
	) pivot (sum(scope) for keytype in(${themes}))
</select>

案例2程式碼

<select id="findDyAnalysisByCondition" parameterType="map" resultType="DyAnalysis">
	select rdate,keytype,${vl} from (select unitname,to_char(rdate,'yyyy-MM-dd') rdate,keytype,scope from kiaanalysis 
	<if test='themes!=null &amp;&amp; themes!=""'>
		where keytype=#{themes} 
	</if>
	<if test='startDate!= null &amp;&amp; startDate!=""'>
		and rdate >= to_date(#{startDate},'yyyy-mm-dd') 
	</if>
	) pivot (sum(scope) for unitname in(${sta_type}))	
</select>

在ibatis配置檔案寫SQL語句的時候對於一些比如“<”,">","<>","&"," ' "," " "是不能夠識別的,並且會拋異常。

一般可以如下改寫:

    &lt;          < 
    &gt;          >  
    &lt;&gt;   <>
    &amp;      & 
    &apos;      '
    &quot;      "

相關推薦

MyBatis ibatis動態SQL語句配置符號相容大於小於特殊符號問題

在XML對映SQL的檔案中,很多情況下會使用到大於號、小於號等特殊符號,這時候如果不進行控制是無法編譯通過的,這時候需要用到<![CDATA[  ]]>符號進行說明,將此類符號不進行解析,還有一種解決方法就是使用轉移字元,如,案例2,其實,這個問題不止在My

mybatis框架的動態sql語句

  今天突然聽到動態sql語句這個名字,我想了一下,好像腦袋裡面沒有這個概念;上網查了查,動態和靜態都分別是什麼? 拼接sql語句來實現增刪改查,可以讓程式碼複用性增強; 靜態sql就是平常寫死的sq

Mybatis在控制檯顯示sql語句配置檔案

在log4j.properties配置內容如下: 方法一: log4j.rootLogger=debug,stdout,logfile log4j.appender.stdout=org.apache

配置mybatisibatis控制檯列印sql語句

#將ibatislog4j執行級別調到DEBUG可以在控制檯打印出ibatis執行的sql語句 log4j.rootLogger=debug,stdout,logfile ### 把日誌資訊輸出到控

mybatis基於XML配置動態SQL語句

mybatis動態SQL語句 mappers配置檔案中的幾個標籤: <if> <where> <foreach> <sql> If標籤 1 . 作用: 當if標籤的test成立時,就把i

配置Mybatis動態sql語句

今天專案經理讓我們做一個Mybatis的動態sql語句配置檔案 要求如下: (1).提交個多個(3個以上)條件的查詢的mapper配置檔案。 當引數不傳則不作為查詢的條件 (2).insert ,update的配置:沒有傳的欄位不操作該欄位 要完成以上兩個條件就不能只寫

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

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

MyBatis動態SQL語句完成多條件查詢

null nbsp mybatis myba 查詢 from ref HR OS http://blog.csdn.net/yanggaosheng/article/details/46685565 MyBatis中動態SQL語句完成多條件查詢 <select i

Mybatis動態SQL語句使用

第一個 from 在外 字符串 each nbsp mea pack ger 在實際開發中,有時候查詢條件可能是不確定的,查詢條件可能有多條也可能沒有,這時候就需要用到動態的sql語句拼接功能。 一、if、where、sql標簽的使用 需求:在一些高級查詢中,查詢條件存

Mybatis動態sql語句(OGNL語法)

type 語法 key ognl select 動態 font tab class 下面是Mybatis動態sql語句(即OGNL語法)的簡單案例 1.創建表 create table test(id int primary key auto_increment,n

MyBatis SQL語句 符號相容 大於 小於 (XML轉義字元)

將語句中的位運算(與)”&“符使用“&amp;”替換 mybatis配置檔案寫SQL語句的某些字元需要轉義:   &lt;          <&nbs

使用Mybatis動態sql語句時出現:元素內容必須由格式正確的字元資料或標記組成

>號用&gt;表示,<號用&lt;表示 @Select("<script> select sum(amount) from user_bills where " + " bill_type=#{billType

mybatis-動態SQL語句

一、CONCAT字串拼接 1. sql中字串拼接    SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} 代替 #{...}    SELEC

mybatis動態sql語句

mybatis 的動態sql語句是基於OGNL表示式的。可以方便的在 sql 語句中實現某些邏輯. 總體說來mybatis 動態SQL 語句主要有以下幾類: if 語句 (簡單的條件判斷) choose (when,otherwize) ,相當於java

mybatis 動態sql語句

mybatis 的動態sql語句是基於OGNL表示式的。可以方便的在 sql 語句中實現某些邏輯. 總體說來mybatis 動態SQL 語句主要有以下幾類: if 語句 (簡單的條件判斷) choose (when,otherwize) ,相當於java 語言

mybaits(查詢與別名日誌框架顯示sql語句物件屬性資料庫表字段匹配resultMap使用mysql資料查詢分頁執行sql儲存過程動態SQL語句

主要是各種配置檔案,建議把整個專案搬到自己電腦上慢慢看。 建立maven專案 首先是各種配置檔案: pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m

mybatis實踐之動態sql+重用語句塊(include)

1.com.dao(.java+.xml) public interface ShopMapper { List<Shop> queryLike(String shopName); List<Shop> queryByCondi

Mybatis的Mapper檔案中用註解方式寫動態Sql語句演示

引言 正如我們所知在mapper檔案中用註解的方式寫一些普通的查詢,刪除sql語句格式都相對簡單,而且一般我們如果有動態sql需要的話,可以採用把sql寫在xml檔案,然後根據Mapper內方法id進行匹配,實現我們複雜的查詢或者迴圈新增等操作。 但是,本人經歷過公司同意要求把s

MyBatis動態sql語句

一、if if是mybatis動態SQL中的判斷元素,這個有點類似於Java的if語句,不同的是這裡的if一般常和test配合使用。if標籤一般用於非空驗證,如下例,若id為空,if標籤裡的程式碼,將不會執行,反之,則會執行中 <select id="getUser" resultMa

IbatisMybatis利用log4j將SQL語句列印在控制檯

在做一個專案Demo的時候,使用MyBatis+Spring,發現寫好的SQL查詢出來不對勁,但是也沒報錯, 所以想到用日誌把SQL語句打出來.也參考了部分網友的程式碼,最後總結了一下,發現正常執行。 本人專案為Mybatis+SpringMVC,所有都已配置好,且正常執行