mapper.xml 中共用
mapper.xml 間共用
項目中也許我們會遇到一段sql語句被多個查詢、增加等語句用到的情況,如何去偷懶呢,復用sql無疑是較好的選擇
這里只提供簡單的示范:
如果只是單表查詢,并且希望共用的sql只會出現在同一個mapper.xml文件中,那么我們可以直接在
1
|
<mapper namespace= "XXXXX" ></mapper> |
中寫下面的業務代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<sql id= "unitSql" > a.userId,a.legalCode,legalName, bidderCodeType,legalRole, licenseNo,DATE_FORMAT(licenseEndDate, "%Y-%m-%d" ) AS licenseEndDate, taxCertNo,DATE_FORMAT(taxCertEndDate, "%Y-%m-%d" ) AS taxCertEndDate, localTaxCertNo,DATE_FORMAT(localTaxCertEndDate, "%Y-%m-%d" ) AS localTaxCertEndDate, organNo,DATE_FORMAT(organCertEndDate, "%Y-%m-%d" ) AS organCertEndDate, legalRepresent,legalType, perresentPhone,legalIndustary,creditRate, countryRegion,legalUnitAddress,regionCode,registerProvince, a.regCapital,a.regCapCurRency,a.regUnit, registerCity,registerCounty,basicBank,basicBranchBank, basicAccountNo,basicAccountName,legalContact,legalContactPhone, legalContactAddress,legalWeb,legalZipCode,legalEmail, legalStatus </sql> |
然后引用
1
2
3
4
5
6
7
8
9
10
|
<select id= "getTenderAgentById" parameterType= "String" resultType= "Map" > select <include refid= "unitSql" />, -- 就是這句話引用 ,refid為共有sql語句id b.auditOpinion,b.createUser, b.createTime, b.lastUpdateUser, b.lastUpdateTime, b.disabled,b.infoStatus from P_legalUnit a, P_tenderAgent b where b.userId=#{userId} AND a.userId = b.userId AND b.disabled= '0' </select> |
如果是連表查詢,那么我們極有可能會希望有一個sql語句被多個mapper.xml引用的的方法,很簡單。
我們可以新建一個mapper.xml文件(當然,這個mapper.xml要在你的掃描路徑下,本文不贅述)。取名為common.xml
該文件內容為
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace= "common" > <sql id= "common.unitSql" > a.userId,a.legalCode,legalName, bidderCodeType,legalRole, licenseNo,DATE_FORMAT(licenseEndDate, "%Y-%m-%d" ) AS licenseEndDate, taxCertNo,DATE_FORMAT(taxCertEndDate, "%Y-%m-%d" ) AS taxCertEndDate, localTaxCertNo,DATE_FORMAT(localTaxCertEndDate, "%Y-%m-%d" ) AS localTaxCertEndDate, organNo,DATE_FORMAT(organCertEndDate, "%Y-%m-%d" ) AS organCertEndDate, legalRepresent,legalType, perresentPhone,legalIndustary,creditRate, countryRegion,legalUnitAddress,regionCode,registerProvince, a.regCapital,a.regCapCurRency,a.regUnit, registerCity,registerCounty,basicBank,basicBranchBank, basicAccountNo,basicAccountName,legalContact,legalContactPhone, legalContactAddress,legalWeb,legalZipCode,legalEmail, legalStatus </sql> </mappper> |
在另一個mapper.xml文件引用
1
2
3
4
5
6
7
8
9
10
|
<select id= "getTenderAgentById" parameterType= "String" resultType= "Map" > select <include refid= "common.unitSql" />, -- 就是這句話引用 ,refid為共有sql語句id b.auditOpinion,b.createUser, b.createTime, b.lastUpdateUser, b.lastUpdateTime, b.disabled,b.infoStatus from P_legalUnit a, P_tenderAgent b where b.userId=#{userId} AND a.userId = b.userId AND b.disabled= '0' </select> |
==注:為何我的文件名要取為common.xml并且id也為common.unitSql呢?這是為了后期維護方便,如此,可以更容易找到該共有的sql在哪一個文件==
以上所述是小編給大家介紹的Mybatis中 SQL語句復用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://blog.csdn.net/sinat_33155679/article/details/61914139