背景
本文將介紹三個開發程序中的小技術點:
- Vue 組件傳遞物件時,根據是否會修改原物件內容,決定是直接使用,還是用副本;
- Spring 容器托管的物體 Bean 名稱的基本規則;
- MyBatis 默認的 update 操作對 null 屬性的處理方式,
Vue 子組件中使用屬性的副本
Vue 前端開發程序中,父組件參考某個子組件時,可以直接傳遞物件屬性給子組件,如果子組件只是參考資料,而不對資料進行修改,這個用法沒問題,
如果子組件需要修改該資料,且有“確定”、“取消”按鈕來決定是否保存資料,就不能直接用父組件傳來的資料,因為“取消”操作不應該修改父組件的資料,
正確的方法是,在子組件中使用副本接收父組件的資料,放入自己獨立的屬性中,本組件參考自己的資料:
const copyArray = JSON.parse(JSON.stringify(data))
結論:Vue 是基于資料驅動的,而資料又是以物件呈現的,組件直接對物件操作時,參考地址相同,所以需要注意全域參考程序中資料的一致性,
Spring 托管的 Bean 名稱生成規則
基于 Spring 容器的開發程序中,習慣了各種 @Autowired 自動注入后,如果有某些普通類,例如自定義的定時任務,webmagic 的落地處理類等,需要獲取 Spring 托管的物體類,怎么辦呢?
答案是自定義一個 @Component 注解標識的工具類,從 SpringContext 獲取實體,
被 @Service 或 @Component 自動掃描的類,通過 getBean 獲取時,它的 beanName 是什么呢?
Spring 存盤 Bean 實體到容器時,名稱命名的規則有兩點需要了解:
- 常規類,類名首字母小寫;例如 UserService ,對應 userService
- 非常規類,比如 ABCUserService ,以超過兩個大寫字母開頭的類,與類名一致,對應 ABCUserService,
MyBatis 默認的 update 操作
MyBatis 的 BaseMapper 類封裝了增刪改查等常用方法,update 的方法需要注意的一點是,傳入物體的某個屬性為 null 時,它會將資料庫中該物體對應的表的欄位更新為 null 嗎?
結論是:不會,
如果需要根據物體的屬性值,嚴格更新資料庫,那么需要自定義 update 方法,不排除開發中有這種需求,即需要將某列修改為 null ,此時默認方法就不滿足需求,
最后,總結 MyBatis 框架使用默認配置能正確開發的兩個前提:
- 資料庫表欄位多單詞間用 “_” 連接,對應物體屬性符合駝峰命名規則;
- 資料庫表欄位中沒有資料庫的
保留關鍵字,因為它不會處理轉義,例如 MySQL 的 option 是一個保留關鍵字,MyBatis 自動操作有該列名的表時,會發生 SQL 語法錯誤,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/46289.html
標籤:其他
上一篇:SQL陳述句的一些應用陳述句
下一篇:資料庫系統概論(1)
