日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

插入數據庫某個字段之前判斷是否重復

作者:碼籠包 更新時間: 2022-01-27 編程語言

做insert操作時,可能在保存之前要判斷用戶輸入的某個數據是否在數據庫中唯一存在,是否與其他數據重復。這里重點記錄sql語句以及service如何實現。
1、錯誤示范
service層:

 selMap =commDAO.selectOne(KFSGL + "KFSDM_Q", paramsMap);

dao層:

  <!-- 查詢是否存在相同的開發商代碼-->
<select id="KFSDM_Q" parameterType="hashmap" resultType="hashmap">
		select 1 as count from dual where exists
		select if from Fw_sypt_kfsjlb where kfsdm=#{KFSDM}
</select>

錯誤原因:
1、當用戶輸入的開發商代碼重復時,sql語句得到的count=1,此時結果與預期相同,用戶無法保存。
2、當用戶輸入的開發商代碼不重復時,sql語句得到的count=null,此時沒有返回結果,selectOne()查詢出錯,拋出異常,導致可以保存的數據無法保存。原因是:selectOne必須返回一條結果。而使用select()查詢時,也會拋出異常,并且select的返回值是List,不好進行轉換;selectOne的返回值類型是Map,比較好進行轉換。

2、正確做法
service層:

 selMap =commDAO.selectOne(KFSGL + "KFSDM_Q", paramsMap);

dao層:

  <!-- 查詢是否存在相同的開發商代碼-->
	<select id="KFSDM_Q" parameterType="hashmap" resultType="hashmap">
		select count(id) as count from Fw_sypt_kfsjlb where kfsdm=#{KFSDM}
    </select>

原理:保證一定有返回值,用到count()函數

原文鏈接:https://blog.csdn.net/Abracadabra__/article/details/84395696

欄目分類
最近更新