淺談動態sql的優雅之美

       習慣了ssh,一開始還有點不喜歡寫sql,但在找工作的途中,讓我充分認識到sql的重要性,這讓我更加對ssm或者說手寫sql是多麼重要的的一件事。其它的不說了,分享下項目中的使用的sql,什麼通用mapper就讓成爲過去吧!!

1.mapper裏面的list查詢方法

<select id="list" parameterType="xxxxx.AppLittleTodoVo"

resultType="xxxxxx.AppLittleTodoEntity">
select 
<include refid="selectColumn"/>,c.cust_name as custName,c.main_mobile as mainMobile,
p.property_name propertyName
from t_app_little_todo as t
LEFT JOIN t_crm_customer c on t.request_cust_code = c.cust_code
left join t_crm_property p on p.property_code=t.request_property_code
<trim prefix="WHERE" prefixOverrides="AND |OR ">
<include refid="queryCondition"/>
</trim> 
</select>

2.查詢字段

<sql id="selectColumn">
t.id as id,
t.request_cust_code as requestCustCode,
t.request_property_code as requestPropertyCode,
t.status as status,
t.handle_cust_code as handleCustCode,
DATE_FORMAT(t.handle_time,'%Y-%m-%d %H:%i:%s') as handleTime,
t.remarks as remarks,
DATE_FORMAT(t.operate_date,'%Y-%m-%d %H:%i:%s') as operateDate,
t.operate_user as operateUser

</sql>

3.動態加載查詢條件,無需關注具體哪一個字段,前端傳過來的是一個對象

<sql id="queryCondition">
<if test="id != null and id != ''">
AND t.id = #{id} 
</if>
<if test="requestCustCode != null and requestCustCode != ''">
AND t.request_cust_code = #{requestCustCode} 
</if>
<if test="requestPropertyCode != null and requestPropertyCode != ''">
AND t.request_property_code = #{requestPropertyCode} 
</if>
<if test="status != null and status == 0">
AND t.status = #{status} 
</if>
<if test="status != null and status == 1">
AND t.status > #{status} 
</if>
<if test="handleCustCode != null and handleCustCode != ''">
AND t.handle_cust_code = #{handleCustCode} 
</if>
<if test="handleTime != null and handleTime != ''">
AND t.handle_time = #{handleTime} 
</if>
<if test="remarks != null and remarks != ''">
AND t.remarks = #{remarks} 
</if>
<if test="operateDate != null and operateDate != ''">
AND t.operate_date = #{operateDate} 
</if>
<if test="operateUser != null and operateUser != ''">
AND t.operate_user = #{operateUser} 
</if>
<if test="custCode != null and custCode != ''">
AND (t.request_cust_code = #{custCode} or t.handle_cust_code = #{custCode})
</if>
</sql>

總結:在這裏我要說一下,越來越多的項目中的藉口,傳的並不是一個固定的參數,而是一個可變參數(即對象),所以,通過不同的參數,可以獲取想要的數據,同理,這種好處,這可以極大提高接口的利用率。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章