dao層和service層中對應操作

進行代碼檢查的時候,被同事發現了一個問題,dao層中不管是update,insert,delete還是select操作,統一用的是,但是我在使用的時候結果並沒有錯誤,但爲了規範,在此做一下總結,貼出代碼留個教訓。
代碼檢查錯誤
1、select操作
service層中:selectOne—>查找一條記錄;select—>查找多條記錄;返回值—>hashmap

Map<String, Object> selMap=commDAO.selectOne(KFSGL + "KFSGL_S", paramsMap);		
Map<String, Object> selMap=commDAO.select(KFSGL + "KFSXX_Q", paramsMap);

dao層中:

<!--單記錄查找  -->
	<select id="KFSGL_S" parameterType="hashmap" resultType="hashmap">
		select ID,KFSMC,KFSDM,LXRXM,LXDH,LXRSM,YXDZ,TXDZ,KFSMS	
		from FW_SYPT_KFSJLB
		where ID=#{ID}	
	</select>
<!-- 多記錄查詢開發商信息 -->
	<select id="KFSXX_Q" parameterType="hashmap" resultType="hashmap">
		select id KFSID, KFSMC as KFS_XZ
		  from FW_SYPT_KFSJLB
         WHERE 1=1  AND YXBZ = '1'
    </select>

2、update操作
service層中:update—>更新;返回值—>int

if(id!=null&&id!=""){
	 temp=commDAO.update(KFSGL + "KFSGL_U", paramsMap);
}

dao層中:可以不寫resultType,細節方面要注意

<update id="KFSGL_U" parameterType="hashmap">  
		update FW_SYPT_KFSJLB
		<set>
			<if test="KFSMC != null and KFSMC != ''"> KFSMC =#{KFSMC}, </if>
			<if test="KFSDM != null and KFSDM != ''"> KFSDM =#{KFSDM}, </if>
			<if test="LXRXM != null and LXRXM != ''"> LXRXM =#{LXRXM}, </if>
			<if test="LXDH != null and LXDH != ''">   LXDH =#{LXDH},   </if>
			<if test="LXRSM != null and LXRSM != ''"> LXRSM =#{LXRSM}, </if>
			<if test="YXDZ != null and YXDZ != ''">   YXDZ =#{YXDZ},   </if>
			<if test="TXDZ != null and TXDZ != ''">   TXDZ =#{TXDZ},   </if>
			<if test="KFSMS != null and KFSMS != ''"> KFSMS =#{KFSMS}, </if>
			<if test="CJR != null and CJR != ''">     CJR =#{CJR},     </if>
			CJSJ =sysdate
		</set>
		<where>
			ID = #{ID}
		</where>
	</update>

3、insert操作
service層中:insert—>插入;返回值—>int

temp=commDAO.insert(KFSGL + "KFSGL_I", paramsMap);

dao層中:可以不寫resultType,細節方面要注意

<!-- 更新或者插入操作,默認有效標誌爲1 -->
	 <insert id="KFSGL_I" parameterType="hashmap">
		insert into FW_SYPT_KFSJLB(ID,KFSMC,KFSDM,LXRXM,LXDH,LXRSM,YXDZ,TXDZ,KFSMS,YXBZ,CJSJ,CJR)
		values(SEQ_SYPT_KFSJLB_ID.nextval,#{KFSMC},#{KFSDM},#{LXRXM},#{LXDH},#{LXRSM},#{YXDZ},#{TXDZ},{KFSMS},'1',sysdate,#{CJR})
	</insert>

4、delete操作
由於數據很重要,作用非常大,因此在實際開發中,基本上是不存在物理上的刪除數據的,只是邏輯上的刪除數據,僅僅只是讓用戶覺得自己刪除了數據,實際開發中的delete一般用update操作來代替。這裏爲了總結,還是寫一寫delete操作。
service層中:delete—>刪除;返回值—>int

temp=commDAO.delete(KFSGL + "KFSGL_D", paramsMap);

dao層中:可以不寫resultType,細節方面要注意

<!-- 更新或者插入操作,默認有效標誌爲1 -->
	 <insert id="KFSGL_D" parameterType="hashmap">
		delete from FW_SYPT_KFSJLB  where id='#{id}'
	</insert>

5、總結
service層中統一調用了select(),用於進行update,insert,delete還是select操作(dao層配置sql語句還是沒有改變,還是用了update,insert等等關鍵字),結果並沒有錯誤,原因可能是因爲service中查找mybatis中的配置信息時,僅僅還是根據id找到相應的sql語句進行執行,並沒有匹配service中的函數調用是否和mybatis中配置的一樣。但是這類問題要規避,因爲現在沒有問題不代表之後沒有問題,缺陷都是隱藏在沒有被發現,還是要注重規範。

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