MyBatis框架搭建與代碼解讀分析
前言:
MyBatis是一個(gè)靈活的持久層框架,適合與數(shù)據(jù)庫(kù)交互,支持自定義SQL和高級(jí)映射。搭建MyBatis的基本步驟包括:
- 環(huán)境準(zhǔn)備:安裝JDK、Maven和IDE。
- 創(chuàng)建項(xiàng)目:建立Maven項(xiàng)目并設(shè)置基本信息。
- 添加依賴:在
pom.xml
中引入MyBatis和數(shù)據(jù)庫(kù)驅(qū)動(dòng)的依賴。 - 配置MyBatis:創(chuàng)建
mybatis-config.xml
文件,配置數(shù)據(jù)庫(kù)連接和Mapper。 - 實(shí)現(xiàn)Mapper和模型:編寫(xiě)Mapper接口及其XML文件和對(duì)應(yīng)的模型類。
- 主程序測(cè)試:通過(guò)主類測(cè)試數(shù)據(jù)庫(kù)連接和查詢。
完成這些步驟后,可以成功建立一個(gè)簡(jiǎn)單的MyBatis項(xiàng)目,實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互
背景介紹
mybatis原來(lái)是apache下面的一個(gè)開(kāi)源項(xiàng)目,名為ibatis
2010年開(kāi)發(fā)團(tuán)隊(duì)轉(zhuǎn)投Google旗下,更名為MyBatis
MyBatis介紹
MyBatis是一個(gè)優(yōu)秀的數(shù)據(jù)持久層框(dao層 數(shù)據(jù)訪問(wèn)層 數(shù)據(jù)持久層),也就是在Dao層處理數(shù)據(jù)
MyBatis是對(duì)jdbc進(jìn)行封裝,避免了jabc中手動(dòng)設(shè)置參數(shù),手動(dòng)映射結(jié)果的操作
MyBatis將jdbc中的接口進(jìn)行封裝,提供了他自己的類和接口實(shí)現(xiàn)
MyBatis可以使用xml配置和注解的方式,將數(shù)據(jù)庫(kù)中記錄自動(dòng)映射到Java對(duì)象中,是一種ORM實(shí)現(xiàn)(對(duì)象關(guān)系映射) 將可以自動(dòng)將數(shù)據(jù)映射到對(duì)象中的這種框架,也成為orm框架
MyBatis還提供了動(dòng)態(tài)sql和數(shù)據(jù)緩存
MyBatis搭建
創(chuàng)建一個(gè)maven對(duì)象導(dǎo)入MyBatis.jar包創(chuàng)建一個(gè)全局的MyBatis配置文件創(chuàng)建數(shù)據(jù)庫(kù)定義Dao接口,定義方法創(chuàng)建sql映射文件,編寫(xiě)sql測(cè)試MyBatis MyBatis官方網(wǎng)址
https://mybatis.org/mybatis-3/zh_CN/index.html
第一步:創(chuàng)建maven對(duì)象
第二步:導(dǎo)入jar包
注:因?yàn)?strong>mybati是是對(duì)mysql的封裝,本質(zhì)上還是與數(shù)據(jù)的連接操作,所以我們依舊需要導(dǎo)入mysql jar包
第三步:創(chuàng)建MyBatis配置文件并配置文件
配置文件:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- MyBatis配置文件--> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 為類配置別名--> <typeAliases> <!--<typeAlias type="com.kid.mybatispro.model.Admin" alias="Admin"></typeAlias>--> <package name="com.kid.mybatispro.model"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <!--type="POOLED" 使用數(shù)據(jù)庫(kù)連接池功能--> <dataSource type="POOLED"> <!-- 數(shù)據(jù)庫(kù)連接的配置--> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 注冊(cè)映射文件--> <mappers> <mapper resource="mappers/AdminMapper.xml"></mapper> </mappers> </configuration>
數(shù)據(jù)庫(kù)連接池(POOED)
鏈接數(shù)據(jù)庫(kù),每次訪問(wèn)數(shù)據(jù)時(shí)候,創(chuàng)建一個(gè)Connection,用完關(guān)閉.但訪問(wèn)量大了后,每次都要?jiǎng)?chuàng)建新的連接對(duì)象,用完關(guān)閉,比較耗時(shí)
使用數(shù)據(jù)庫(kù)連接池,在池(集合)中事先創(chuàng)建一些連接對(duì)象,用戶訪問(wèn)時(shí),就直接池中獲取一個(gè)鏈接對(duì)象,用完不銷毀,還回池中.這樣就減少頻繁創(chuàng)建銷毀連接對(duì)象
第四步:創(chuàng)建數(shù)據(jù)庫(kù)
create table admin( id int primary key auto_increment, account varchar(20), password varchar(20), gender CHAR(1) )
注:在數(shù)據(jù)庫(kù)中填入幾組值,方便后面使用 .
第五步:定義接口
package com.kid.mybatispro.dao; import com.kid.mybatispro.model.Admin; import org.apache.ibatis.annotations.Param; import java.util.List; public interface AdminDao { //單個(gè)參數(shù)傳遞 Admin findAdminById(int id); Admin findAdminByAccount(int id); //多個(gè)參數(shù)的傳遞 Admin login(@Param("acc") String account, @Param("pass") String password); Admin login1(Admin admin); // 添加數(shù)據(jù) void insertAdmin(Admin admin); void deleteAdmin(int id); void updateAdmin(Admin admin); int findAdminCount(); String findAdminId(String account); List<Admin> findAdmins(); }
注:接口中定義我們所需的操作
第六步:創(chuàng)建sql映射文件,編寫(xiě)sql
代碼:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="接口的地址"> <select id="findAdminById" parameterType="int" resultType="com.ffyc.mybatis.model.Admin"> select * from admin where id = #{id} </select> </mapper>
代碼解讀:
注:我們可以在配置文件中為類定義別名
我們就就可以簡(jiǎn)寫(xiě)為:
第七步:測(cè)試MyBatis
第一步:讀取配置文件
讀取配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
mybatis-config.xml---->為我們定義的配置文件名(創(chuàng)建的第一個(gè).xml文件)
第二步:創(chuàng)建 SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
read---->上面創(chuàng)建的對(duì)象
注:創(chuàng)建 SqlSessionFactory 負(fù)責(zé)創(chuàng)建SqlSession對(duì)象(連接數(shù)據(jù)庫(kù)的會(huì)話對(duì)象,類似Connection) SqlSessionFactory對(duì)象只需要?jiǎng)?chuàng)建一次,不需要銷毀
第三步:創(chuàng)建SqlSession
SqlSession sqlSession = sessionFactory.openSession();
第四步:獲得接口代理對(duì)象
sqlSession.getMapper(接口.class); sqlSession .close();關(guān)閉
代碼:
public static void main(String[] args) throws IOException { //MyBatis讀取配置文件 Reader reader = Resources.getResourceAsReader("mybatis.xml"); //創(chuàng)建 SqlSessionFactory 負(fù)責(zé)創(chuàng)建SqlSession對(duì)象(連接數(shù)據(jù)庫(kù)的會(huì)話對(duì)象,類似Connection) //SqlSessionFactory對(duì)象只需要?jiǎng)?chuàng)建一次,不需要銷毀 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //創(chuàng)建SqlSession對(duì)象 SqlSession sqlSession = sessionFactory.openSession(); //創(chuàng)建接口的代理對(duì)象 AdminDao adminDao = sqlSession.getMapper(AdminDao.class); Admin admin = adminDao.findAdminById(1); //讓代理對(duì)象帶我們巧用映射文件中與此接口中相同名稱的方法 System.out.println(admin); }
到此這篇關(guān)于MyBatis框架搭建與代碼解讀的文章就介紹到這了,更多相關(guān)MyBatis框架搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解idea搭建springboot+mybatis框架的教程
- 使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)
- Spring+Mybatis+Mysql搭建分布式數(shù)據(jù)庫(kù)訪問(wèn)框架的方法
- 詳解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超級(jí)詳細(xì)版)
- Java框架搭建之Maven、Mybatis、Spring MVC整合搭建(圖文)
- 詳解MyEclipse中搭建spring-boot+mybatis+freemarker框架
- Spring MVC 4.1.3 + MyBatis零基礎(chǔ)搭建Web開(kāi)發(fā)框架(注解模式)
- Java的MyBatis框架項(xiàng)目搭建與hellow world示例
- Windows下Java+MyBatis框架+MySQL的開(kāi)發(fā)環(huán)境搭建教程
相關(guān)文章
Java中實(shí)現(xiàn)多線程關(guān)鍵詞整理(總結(jié))
這篇文章主要介紹了Java中實(shí)現(xiàn)多線程關(guān)鍵詞整理,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05maven中自定義MavenArchetype的實(shí)現(xiàn)
Maven自身提供了許多Archetype來(lái)方便用戶創(chuàng)建Project,為了避免在創(chuàng)建project時(shí)重復(fù)的拷貝和修改,我們通過(guò)自定義Archetype來(lái)規(guī)范顯得還蠻有必要,下面就來(lái)介紹一下,感興趣的可以了解一下2025-01-01spring?cloud?Gateway如何處理跨域問(wèn)題
這篇文章主要介紹了spring?cloud?Gateway如何處理跨域問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04SpringCloud配置服務(wù)端的ConfigServer設(shè)置安全認(rèn)證
這篇文章主要為大家介紹了SpringCloud配置服務(wù)端的ConfigServer設(shè)置安全認(rèn)證,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08自定義SpringBoot的白標(biāo)錯(cuò)誤頁(yè)面的操作方法
Spring Boot的白標(biāo)錯(cuò)誤頁(yè)面是在應(yīng)用程序出現(xiàn)錯(cuò)誤時(shí)(如404或500 HTTP狀態(tài)碼)自動(dòng)生成的默認(rèn)錯(cuò)誤頁(yè)面,下面小編給大家分享如何自定義SpringBoot的白標(biāo)錯(cuò)誤頁(yè)面,感興趣的朋友跟隨小編一起看看吧2024-06-06java HashMap通過(guò)value反查key的代碼示例
本文講解了java HashMap通過(guò)value反查key的方法,直接提供代碼供大家參考使用2013-11-11C# 中Excel導(dǎo)入時(shí)判斷是否被占用三種方法
這篇文章主要介紹了C# 中Excel導(dǎo)入時(shí) 判斷是否被占用三種方法的相關(guān)資料,需要的朋友可以參考下2017-04-04java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Java數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列的相關(guān)資料,算是作為用java描述數(shù)據(jù)結(jié)構(gòu)的一個(gè)開(kāi)始,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11