MyBatis資料持久化 SQL複用(可重用的 SQL 程式碼段)
1、修改pom.xml,升級MyBatis版本升級到3.3.0以上版本
2、重新整理maven(兩種方式)
A. 命令方式
在terminal視窗輸入:
mvn clean install -Dmaven.test.skip=true
小注:
clean 移除所有上一次構建生成的檔案
install 將包安裝至本地倉庫,以讓其它專案依賴
maven.test.skip 跳過測試
該方式需要先定位到pom.xml所在的資料夾,再執行命令。
B. 工具操作方式:
利用idea中的Maven工具來操作,先clean後install
AB兩種方式,操作完成後,最好重新整理一下
如果還是不行,刪除一下target檔案
3、程式碼編寫
<sql id="sqlDemo1">
SELECT * FROM tableA
<where>
tableA.code=#{code}
<if test="city != null and city!= ''">
AND tableA.city = #{city}
</if>
</where>
</sql>
<sql id="sqlDemo2">
SELECT * FROM tableB
<where>
tableB.city IN
(
<include refid="sqlDemo1">
<property name="city" value="${city}"/>
<property name="code" value="${code}"/>
</include>
)
</where>
</sql>
<select id="getList" parameterType="Map" resultType="Map">
<include refid="sqlDemo2">
<property name="city" value="${city}"/>
<property name="code" value="${code}"/>
</include>
</select>
該程式碼主要演示了:sql片段可以巢狀,可以動態傳值,但注意在給property的value傳值時,只能用$,用#的會導致在sql中取不到值。
上面用的ide是:IntelliJ IDEA 15.0.6
用property的時候idea有可能報錯如下,但編譯可以通過不影響使用:
至於sql片段傳遞固定值,可以參考以下說明
=================傳遞固定值=====================
這個元素可以被用來定義可重用的 SQL 程式碼段,可以包含在其他語句中。它可以被靜態地(在載入引數) 引數化. 不同的屬性值通過包含的例項變化. 比如:
<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>
這個 SQL 片段可以被包含在其他語句中,例如:
<select id="selectUsers" resultType="map">
select
<include refid="userColumns"><property name="alias" value="t1"/></include>,
<include refid="userColumns"><property name="alias" value="t2"/></include>
from some_table t1
cross join some_table t2
</select>
屬性值可以用於包含的refid屬性或者包含的字句裡面的屬性值,例如:
sql id="sometable">
${prefix}Table
</sql>
<sql id="someinclude">
from
<include refid="${include_target}"/>
</sql>
<select id="select" resultType="map">
select
field1, field2, field3
<include refid="someinclude">
<property name="prefix" value="Some"/>
<property name="include_target" value="sometable"/>
</include>
</select>
小注:傳遞傳遞值部分摘自《MyBatis官方文件》,連結地址:
http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- 【資料結構】可持久化線段樹初步資料結構持久化
- 可持久化線段樹持久化
- SQL Server中Table字典資料的查詢SQL示例程式碼SQLServer
- 可持久化資料結構持久化資料結構
- 【Mybatis之sql複習】多表關係MyBatisSQL
- 程式碼質量第 2 層 - 可重用的程式碼
- 複雜SQL構造資料:SQL
- 【SQL】18 SQL NULL 函式、SQL 通用資料型別、SQL 用於各種資料庫的資料型別SQLNull函式資料型別資料庫
- mybatis執行sql指令碼MyBatisSQL指令碼
- mybatis原始碼-註解sqlMyBatis原始碼SQL
- 可持久化資料結構1持久化資料結構
- mybatis中註解對映SQL示例程式碼MyBatisSQL
- 資料庫優化SQL資料庫優化SQL
- SQL Server 資料表程式碼建立約束SQLServer
- 精盡MyBatis原始碼分析 - MyBatis初始化(四)之 SQL 初始化(下)MyBatis原始碼SQL
- 精盡MyBatis原始碼分析 - MyBatis初始化(三)之 SQL 初始化(上)MyBatis原始碼SQL
- 「學習筆記」可持久化線段樹筆記持久化
- 資料庫優化 - SQL優化資料庫優化SQL
- Mybatis 列印完整的SQLMyBatisSQL
- MYSQL資料庫------SQL優化MySql資料庫優化
- 七大SQL程式碼編寫原則:可顯著提高資料庫效能!SQL資料庫
- 區間k小值(可持久化線段樹)持久化
- P3834 【模板】可持久化線段樹 2持久化
- Mybatis如何防止SQL隱碼攻擊MyBatisSQL
- mybatis原始碼解讀---一條sql的旅程MyBatis原始碼SQL
- WPF中的命令模式:打造清晰、可重用的程式碼利器模式
- MS SQL Server 刪除重複行資料SQLServer
- T-SQL——關於表資料的複製插入SQL
- MyBatis 動態 SQLMyBatisSQL
- MyBatis SQL執行MyBatisSQL
- mybatis動態SQLMyBatisSQL
- SQL server資料庫建立程式碼 filegroup檔案組修改的示例程式碼SQLServer資料庫
- Apache Cassandra——可擴充套件微服務應用程式的持久資料儲存Apache套件微服務
- 可持久化線段————主席樹(洛谷p3834)持久化
- python 建立mysql資料庫腳(執行sql)指令碼程式碼PythonMySql資料庫指令碼
- Redis資料持久化—RDB持久化與AOF持久化Redis持久化
- MySQL 資料庫與 SQL 優化MySql資料庫優化
- 【資料庫】優化SQL語言資料庫優化SQL
- SQL複習SQL