網站首頁 編程語言 正文
一、什么是MyBatis?
MyBatis是一個持久層框架,屬于JDBC的替代方案之一,他的前身是iBatis。同時也是ORM關系型映射。
那什么又是ORM關系型映射?
ORM(O/R - Mapping 對象關系映射),是一種把內存中的對象保存到關系型數據庫的技術。用它封裝數據庫訪問的細節。采用元數據(XML)的方式來描述對象-關系(數據庫表)的映射細節,可以使得ORM充當任何一個Java應用業務層到數據庫之間的橋梁。
二、MyBatis的三個要素
1.核心接口和類(SqlSessionFactory 和 SqlSession)
2.核心(主)配置文件 mybatis.cfg.xml
3.SQL映射文件(mapper.xml)
三、SqlSessionFactory和SqlSession
SqlSessionFactory
SqlSessionFactory 是MyBatis中的核心對象,是數據庫映射關系經過編譯之后的內存鏡像,而它的作用就是用來創建SqlSession。
SqlSessionFactory 可以根據上層對象SqlSessionFactoryBuilder對象來進行創建。
SqlSessionFactoryBuilder則可以通過核心(主)配置文件 或者Java代碼定義好的配置類來構建。
SqlSessionFactory ,是線程安全的,它一旦被創建,在應用的運行期間都會存在,如果我們多次創建同一個數據庫的SqlSessionFactory,會導致數據庫資源被消耗殆盡。因此通常情況下,同一個數據庫都只會對應一個SqlSessionFactory ,所以在構建SqlSessionFactory 實例時通常會使用單例模式。
SqlSession
SqlSession對象是另一個核心對象,他是應用程序和持久層之間執行交互操作的單線程對象–其作用主要是執行持久化操作。
每一個線程都應擁有一個自己的SqlSession實例,并且該實例是不共享的,同時也是線程不安全的,SqlSession它的使用范圍最好限制在一次請求或者一個方法中。絕對不能夠把其放在一個類的靜態字段(屬性),注意使用SqlSession對象后,要注意關閉資源。
通常finally關閉或者 try-with-reasoue。
四、搭建MyBatis項目
1.創建Maven項目,在pom.xml導入依賴
<!-- mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!-- mybatis支持JDK8新類型的拓展包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-typehandlers-jsr310</artifactId>
<version>1.0.2</version>
</dependency>
<!-- mysql驅動包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
2.在resources目錄中導入mybaits.cfg.xml-主配置文件,并完成一系列配置
2.1 日志
<settings>
<!-- 設置 執行mybatis方法時,顯示日志信息。比如:SQL語句方法參數等 -->
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
2.2 實體類別名
<typeAliases>
<!-- 別名配置,允許使用指定包中的類名做為實體類的類型 -->
<package name="com.project.bean"/>
</typeAliases>
2.3 數據源配置,設置連接信息
<environments default="dev">
<environment id="dev">
<!-- 指定事務管理器類型 此時指定為JDBC 使用JDBC的提交和回滾設置 -->
<transactionManager type="JDBC"></transactionManager>
<!-- dataSource 設置數據源 type=POOLED指使用JDBC的POOLED數據源連接池的實現對象 -->
<dataSource type="POOLED">
<!-- 數據庫驅動 mysql5 - com.mysql.jdbc.Driver
mysql8 - com.mysql.cj.jdbc.Driver
-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:端口號/數據庫名稱?characterEncoding=utf-8&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="密碼"/>
</dataSource>
</environment>
</environments>
2.4 鏈接映射文件
<!-- 映射文件的所在位置 -->
<mappers>
<!-- 掃描指定包下的映射文件 -->
<package name="com.project.dao"/>
</mappers>
3.在resources目錄下去創建映射文件和持久接口同名的層級目錄,并完成映射文件名稱的修改(和持久接口同名)
<mapper namespace="com.project.dao.接口文件">
</mapper>
隨后就可在其中通過標簽書寫sql語句
<insert id="addMan"> 標簽的id名稱,需要和對應的方法同名
<!-- addMan意味著持久接口中有同名方法addMan() -->
</insert>
原文鏈接:https://blog.csdn.net/weixin_44002920/article/details/126082225
- 上一篇:Spring框架常考知識點總結
- 下一篇:Spring之基于注解裝配Bean
相關推薦
- 2022-10-18 Go項目怎么使用枚舉_Golang
- 2023-01-14 React項目中className運用及問題解決_React
- 2022-07-01 C語言詳細講解strcpy?strcat?strcmp函數的模擬實現_C 語言
- 2025-02-10 window11 系統安裝 yarn
- 2022-11-15 Python正則表達式re.search()用法詳解_python
- 2022-09-27 在?React?Native?中給第三方庫打補丁的過程解析_React
- 2022-06-21 python繪制帶有色塊的折線圖_python
- 2022-08-22 python單元測試框架pytest介紹_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同步修改后的遠程分支