網站首頁 編程語言 正文
做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
相關推薦
- 2024-04-05 springboot注冊攔截器與返回統一標準響應格式
- 2023-12-10 記錄一次導出Excel報表的錯誤
- 2022-01-11 npm install 報錯 gyp info it worked if it ends with
- 2023-02-05 解讀golang中的const常量和iota_Golang
- 2023-05-07 Pygame顯示文字的實現示例_python
- 2023-11-20 數據處理matlibplot繪圖顏色對照表
- 2022-07-30 RocketMQ消息過濾是如何實現的?
- 2022-06-30 Python?pickle模塊實現Python對象持久化存儲_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支