框架學習系列 mybatis 第六篇 入門程序之插入數據1
本節主要內容
1:根據上節課中提出的需求完成:向資料庫中插入數據
2:測試代碼實現
3:總結&下節預告
本文是《凱哥陪你學系列-框架學習之mybatis框架學習》中第6篇 mybatis入門程序之需求開發3向資料庫中插入數據1
聲明:本文系凱哥原創。轉載請註明出處
一:資料庫插入數據
1.1:先寫sql插入資料庫
全參數插入:
說明:資料庫中user表中有五個欄位。所以需要五個參數。
在看錶結構:
我們可以看到,主鍵id是自增長類型的。所以在插入的時候可以不進行插入。
修改後的sql語句:
1.2:在mybatis中怎麼寫呢?
思考:
1:直接把sql語句放置到對應的mapper.xml文件中嗎?那麼參數怎麼獲取?
2:傳遞的參數又是什麼?
分析:
1:通過前面學習我們知道#{}相當於是?起佔位符作用
而${}是連接符的作用(相當於是java中加號(+)連接作用)
通過sql語句,我們看到了參數值是四個?。所以這裡使用#{}獲取值。
2:parameterType是對應的pojo對象就可以。
在獲取的時候,#中的屬性就是pojo對象中屬性即可。
這種是通過OGNL表達式獲取的。
說明:
1:通過OGNL表達式到user對象中獲取對應的屬性值
2:#中的屬性名稱必須和user對象中的屬性名稱一致
二:測試代碼
2.1:如下圖:
說明:
1:插入數據的時候使用的是sqlsession的insert方法
2:第一個參數依然是sql語句唯一標識符
3:參數二是sql語句需要的參數。在這裡我們需要的是user這個對象
2.2:使用unit測試
綠色的說明成。
查看列印的sql語句:
說明:
1:Preparing 是執行的sql語句
2:Parameters 是執行sql需要的參數列表。按照?的順序的。
我們發現,明明傳遞的是user對象,這這裡列印出的參數不是user對象,而是我們給user對應屬性設置的值。這就是OGNL表達式做的。
3:Updates 是執行該條sql語句所影響的行數
查詢資料庫:
發現資料庫中並沒有數據啊。這是為什麼呢?
因為沒有提交事務。所以,數據就沒有入庫。
在代碼中添加事務:
重新查詢資料庫:
上面是手動提交事務的。
在創建獲取sqlsession對象的時候,還可以設置為自動提交事務:
就是在openSession的時候傳遞一個boolean類型的參數。
我們可以查看源碼:
發現源碼中會自動commit()的。
三:總結&下節預告
通過本文學習我們需要掌握的
1:在保存數據的時候,如果通過一個對象來保存
2:需要注意的是,在提交的時候需要事務。
如果是自動提交,在執行完insert方法後可以不再手動提交了
如果非自動提交事務,那麼在執行完insert方法後必須手動提交(commit),數據才會入庫的。
下節預告:
在電商項目中,比如下單需要涉及到多張表。如訂單表、訂單明細表、聯繫人(收貨地址、聯繫人、手機號等)表三張表。在訂單明細表和訂單表是關聯的。在訂單明細表中,需要有訂單表的主鍵id.
也就是說,在訂單表數據插入完資料庫後,就需要將這條數據的id作為參數插入到訂單明細表中。
注意這些操作在同一個事務中,怎麼操作才能實現這個功能呢?
歡迎學習下一篇《框架學習系列 mybatis 第7篇 mybatis入門程序之插入資料庫後返回主鍵》
本系列其他文章:
框架學習系列 mybatis第五篇入門程序根據用戶名模糊查詢
框架學習系列 mybatis 第四篇 入門程序之需求開發1
框架學習系列 mybatis 第三篇入門程序之工程項目的搭建
框架學習系列 mybatis第二篇 mybatis的工作原理
框架學習系列 mybatis 第一篇 原生jdbc連接分析
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※框架學習系列 mybatis 第四篇 入門程序之需求開發1
※框架學習系列 mybatis第五篇入門程序根據用戶名模糊查詢
※框架學習系列 mybatis第二篇 mybatis的工作原理
※框架學習系列 mybatis 第三篇入門程序之工程項目的搭建
※老爺子,您這活到老學到老,這讓年輕的我們情何以堪?
TAG:凱哥java |
※Spring Boot入門:第一個Spring Boot程序
※新版Notepad plus plus移除程序代碼數字簽名
※程序媛筆記分享——python模塊之subprocess模塊
※Ferragamo->小程序入口
※編程菜鳥之怎樣用Bootstrap前端框架結合ThinkPHP框架做程序設計
※程序員探案之 Python和Redis 的「第三者」
※第三方Windows 10音量控制應用程序EarTrumpet發布
※Encryption 101系列:解密程序的設計思路
※QuestMobile數據:小程序日活用戶突破了2億
※Google發布基於AI的學習程序Socratic
※開獎+小程序抽籤丨 Air Jordan 1「No L』s」系列「Varsity Red」配色
※Stack Overflow十萬程序員大調查:最想學Python,93%是「直的」
※Google Fuchsia操作系統可執行Android程序
※Python入門篇-利用注釋和main函數用法做一個計算器程序
※Linux操作系統之Shell程序設計
※Web Security事件發酵,Mozilla移除23個可疑插件程序
※Web入門程序——三層架構
※蘋果正式啟動12英寸MacBook和MacBook Pro鍵盤修復程序
※Android銀行木馬——Red Alert 2.0偽裝成合法程序進行傳播
※開獎+小程序抽籤丨Nigel Sylvester x Air Jordan 1