Excel數據導入數據庫、Mybatis整形參數爲零不生效,$賦值和#賦值的區別詳解,Vue對象賦值踩坑

一、Excel數據導入數據庫

問題:如何把Excel表格數據導入數據庫的表中(數據量很大不可能一條條插入)?

解決方案:

(1)   首先試用數據庫連接工具導入Excel表格功能,簡單方便直接,但是有可能數據會出現不正確的情況,比如某個字段要求特定位數不足的前面補零,但是通過工具導入後數據前面的零自動去掉了從而達不到預期的效果,這時需要先將表格的數據轉換爲文本,然後利用Excel公式(=REPT())前面補零保存後再導入即可;

(2)  使用Excel的公式(=CONCATENATE())將數據拼接爲sql插入語句中的正確格式,然後運行sql即可批量插入;

(3)  使用程序語言編寫Excel數據導入工具,運行程序插入數據。

二、Mybatis整形參數爲零不生效,判空需要判斷空字符串,datetime類型不能作判空字符串操作

問題(1):Mybatis整形參數爲零不生效

解決方案:需要<if test="... or data==0">sql 語句</if>

問題(2):數據庫字段判空不能只寫<if test="data != null"></if>?

解決方案:判空還需要判斷空字符串,正確方式:<if test="data != null and data != '' "></if>

問題(3):數據庫字段datatime類型不能作判空字符串操作?

解決方案:不能,只需要:<if test="data != null"></if>

三、Mybatis sql語句$賦值和#賦值的區別詳解

區別:

(1)  #{ }是預編譯處理,MyBatis在處理#{ }時,它會將sql中的#{ }替換爲?,然後調用PreparedStatement的set方法來賦值,傳入字符串後,會在值兩邊加上單引號,如上面的值 “4,44,514”就會變成“ ‘4,44,514’ ”;
(2)  ${ }是字符串替換,MyBatis在處理{ }時,它會將sql中的${ }替換爲變量的值,傳入的數據不會加兩邊加上單引號。

注意:使用${ }會導致sql注入,不利於系統的安全性!

SQL注入:就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。常見的有匿名登錄(在登錄框輸入惡意的字符串)、藉助異常獲取數據庫信息等

應用場合:
1. #{ }:主要用戶獲取DAO中的參數數據,在映射文件的SQL語句中出現#{}表達式,底層會創建預編譯的SQL;

2. ${ }:   主要用於獲取配置文件數據,DAO接口中的參數信息,當美元符號出現在映射文件的SQL語句中時創建的不是預編譯的SQL,而是字符串的拼接,有可能會導致SQL注入問題.所以一般使用$接收dao參數時,這些參數一般是字段名,表名等,例如order by {column}。

注:

1. ${}獲取DAO參數數據時,參數必須使用@param註解進行修飾或者使用下標或者參數#{param1}形式;

2. #{}獲取DAO參數數據時,假如參數個數多於一個可有選擇的使用@param。

參看網址:https://blog.csdn.net/Mrs_chens/article/details/90403648

四、Vue對象賦值踩坑

問題:vue定義的對象數據初始化後對某些屬性改變賦值不能使用的方式?

解決方案:

比如一個對象爲user: {

userName: '',

age: ''

}

對象初始化後user.userName=‘xiaoming’,user.age=18,這時候想要改變age的值,不能這樣賦值:

this.user={

age: 20

}

這樣賦值是錯誤的,表面上看着像只是把年齡重新賦值了,其實這樣會影響userName的值,會導致userName的值會被清空,正確的賦值方式:

this.user.age=20;

 

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