p.s.這是萌新自己自學總結的筆記,如果想學習得更透徹的話還是請去看大佬的講解
目錄
- JDBC、數據庫連接池、lombok
- 日志輸出
- SQL注入
- 數據封裝
- XML映射文件
- 動態SQL
- `<if>`
- `<where>`
- `<set>`
- `<foreach>`
- `<sql>`
- `<include>`
- 配置文件
Mybatis是是一款優秀的數據訪問層框架,用于簡化JDBC的開發
使用Mybatis查詢所有用戶數據
- 準備工作(創建springboot工程、數據庫表user、實體類User)
- 引入Mybatis的相關依賴,配置Mybatis(數據庫連接信息:驅動類全類名、數據庫連接的URL、訪問數據庫的用戶名和密碼)
- 編寫SQL語句(注解/XML)
JDBC、數據庫連接池、lombok
JDBC(Java DataBase Connectivity)即使用java語言操作關系型數據庫的一套API
JDBC本質是sun公司定義的一套操作所有關系型數據庫的規范,即接口
各個數據庫廠商去實現這套接口,提供數據庫驅動jar包
我們可以用這套接口(JDBC)編程,真正執行的代碼是驅動jar包中的實現類
數據庫連接池是個容器,負責分配、管理數據庫連接
它允許應用程序重復使用一個現有的數據庫進行連接,而不是重新再建立一個
釋放空間時間超過最大空閑時間的連接,來避免因為沒有釋放連接而引起的數據庫連接遺漏
。
優勢:資源重用、提升系統響應速度、避免數據庫連接遺漏
Lombok是一個實用的java類庫,能夠通過注解的形式自動生成構造器、getter/setter、equals、hashcode、toString等方法,并可以自動化生成日志變量,簡化java開發、提高效率
lombok會在編譯時,自動生成對應的java代碼,我們使用lombok時,還需要安裝一個lombok的插件(idea自帶)
日志輸出
可以在application.properties中打開mybatis的日志,并指定輸出到控制臺
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
預編譯sql不僅性能更高,而且更安全(防止sql注入)
SQL注入
SQL注入是通過操作輸入的數據來修改事先定義好SQL語句,以達到執行代碼對服務器進行攻擊的方法
數據封裝
實體類屬性名和數據庫查詢返回的字段名一致,mybatis會自動封裝
如果實體類屬性名和數據庫查詢返回的字段名不一致,mybatis則不會自動封裝
解決方案一:給字段起別名,讓別名和實體類屬性一致
解決方案二:通過@Results,@Result注解手動映射封裝
解決方案三:如果字段名與屬性名符合駝峰命名規則,則開啟mybatis的駝峰命名自動映射開關
XML映射文件
規范:
XML映射文件的名稱與Mapper接口名稱名字一致,并且將XML映射文件和Mapper接口放置在相同包下(同包同名)
XML映射文件的namespace屬性為Mapper接口全限定名一致
XML映射文件中sql語句的id與Mapper接口的方法名一致,并保持返回類型(單條記錄)一致
動態SQL
隨著用戶的輸入或外部條件的變化而變化的SQL語句,稱為動態SQL
動態SQL用以下幾種標簽進行實現
<if>
<if>
:用于判斷條件是否成立,使用Test屬性進行條件判斷,如果條件為true,則拼接SQL
<where>
<where>
:where元素只會在子元素有內容的情況下才插入where子句。而且會自動去除子句開頭的AND或者OR
<set>
<set>
:動態的在行首插入SET關鍵字,并會刪除額外的逗號(用在update語句中)
<foreach>
<sql>
<sql>
:定義可重用的SQL片段
<include>
<include>
:通過屬性refid,指定包含的sql片段
配置文件
yml基本語法
大小寫敏感
數值前邊必須有空格,作為分隔符
使用縮進表示層級關系,縮進時,不允許使用tab鍵,只能用空格
縮進的空格數目不重要,只要相同層級的元素左側對齊即可
#表示注釋