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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

插入數(shù)據(jù)庫(kù)某個(gè)字段之前判斷是否重復(fù)

作者:碼籠包 更新時(shí)間: 2022-01-27 編程語(yǔ)言

做insert操作時(shí),可能在保存之前要判斷用戶輸入的某個(gè)數(shù)據(jù)是否在數(shù)據(jù)庫(kù)中唯一存在,是否與其他數(shù)據(jù)重復(fù)。這里重點(diǎn)記錄sql語(yǔ)句以及service如何實(shí)現(xiàn)。
1、錯(cuò)誤示范
service層:

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

dao層:

  <!-- 查詢是否存在相同的開(kāi)發(fā)商代碼-->
<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>

錯(cuò)誤原因:
1、當(dāng)用戶輸入的開(kāi)發(fā)商代碼重復(fù)時(shí),sql語(yǔ)句得到的count=1,此時(shí)結(jié)果與預(yù)期相同,用戶無(wú)法保存。
2、當(dāng)用戶輸入的開(kāi)發(fā)商代碼不重復(fù)時(shí),sql語(yǔ)句得到的count=null,此時(shí)沒(méi)有返回結(jié)果,selectOne()查詢出錯(cuò),拋出異常,導(dǎo)致可以保存的數(shù)據(jù)無(wú)法保存。原因是:selectOne必須返回一條結(jié)果。而使用select()查詢時(shí),也會(huì)拋出異常,并且select的返回值是List,不好進(jìn)行轉(zhuǎn)換;selectOne的返回值類型是Map,比較好進(jìn)行轉(zhuǎn)換。

2、正確做法
service層:

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

dao層:

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

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

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

欄目分類
最近更新