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和模型:編寫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è)開源項(xiàng)目,名為ibatis
2010年開發(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映射文件,編寫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映射文件,編寫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)寫為:

第七步:測(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開發(fā)框架(注解模式)
- Java的MyBatis框架項(xiàng)目搭建與hellow world示例
- Windows下Java+MyBatis框架+MySQL的開發(fā)環(huán)境搭建教程
相關(guān)文章
Java中實(shí)現(xiàn)多線程關(guān)鍵詞整理(總結(jié))
這篇文章主要介紹了Java中實(shí)現(xiàn)多線程關(guān)鍵詞整理,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
maven中自定義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-01
spring?cloud?Gateway如何處理跨域問(wèn)題
這篇文章主要介紹了spring?cloud?Gateway如何處理跨域問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
SpringCloud配置服務(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-06
java HashMap通過(guò)value反查key的代碼示例
本文講解了java HashMap通過(guò)value反查key的方法,直接提供代碼供大家參考使用2013-11-11
C# 中Excel導(dǎo)入時(shí)判斷是否被占用三種方法
這篇文章主要介紹了C# 中Excel導(dǎo)入時(shí) 判斷是否被占用三種方法的相關(guān)資料,需要的朋友可以參考下2017-04-04
java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)幸運(yùn)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Java數(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è)開始,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11

