MyBatis框架搭建與代碼解讀分析
前言:
MyBatis是一個靈活的持久層框架,適合與數(shù)據(jù)庫交互,支持自定義SQL和高級映射。搭建MyBatis的基本步驟包括:
- 環(huán)境準(zhǔn)備:安裝JDK、Maven和IDE。
- 創(chuàng)建項(xiàng)目:建立Maven項(xiàng)目并設(shè)置基本信息。
- 添加依賴:在
pom.xml中引入MyBatis和數(shù)據(jù)庫驅(qū)動的依賴。 - 配置MyBatis:創(chuàng)建
mybatis-config.xml文件,配置數(shù)據(jù)庫連接和Mapper。 - 實(shí)現(xiàn)Mapper和模型:編寫Mapper接口及其XML文件和對應(yīng)的模型類。
- 主程序測試:通過主類測試數(shù)據(jù)庫連接和查詢。
完成這些步驟后,可以成功建立一個簡單的MyBatis項(xiàng)目,實(shí)現(xiàn)與數(shù)據(jù)庫的交互
背景介紹
mybatis原來是apache下面的一個開源項(xiàng)目,名為ibatis
2010年開發(fā)團(tuán)隊(duì)轉(zhuǎn)投Google旗下,更名為MyBatis
MyBatis介紹
MyBatis是一個優(yōu)秀的數(shù)據(jù)持久層框(dao層 數(shù)據(jù)訪問層 數(shù)據(jù)持久層),也就是在Dao層處理數(shù)據(jù)
MyBatis是對jdbc進(jìn)行封裝,避免了jabc中手動設(shè)置參數(shù),手動映射結(jié)果的操作
MyBatis將jdbc中的接口進(jìn)行封裝,提供了他自己的類和接口實(shí)現(xiàn)
MyBatis可以使用xml配置和注解的方式,將數(shù)據(jù)庫中記錄自動映射到Java對象中,是一種ORM實(shí)現(xiàn)(對象關(guān)系映射) 將可以自動將數(shù)據(jù)映射到對象中的這種框架,也成為orm框架
MyBatis還提供了動態(tài)sql和數(shù)據(jù)緩存
MyBatis搭建
創(chuàng)建一個maven對象導(dǎo)入MyBatis.jar包創(chuàng)建一個全局的MyBatis配置文件創(chuàng)建數(shù)據(jù)庫定義Dao接口,定義方法創(chuàng)建sql映射文件,編寫sql測試MyBatis MyBatis官方網(wǎng)址
https://mybatis.org/mybatis-3/zh_CN/index.html
第一步:創(chuàng)建maven對象

第二步:導(dǎo)入jar包

注:因?yàn)?strong>mybati是是對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ù)庫連接池功能-->
<dataSource type="POOLED">
<!-- 數(shù)據(jù)庫連接的配置-->
<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>
<!-- 注冊映射文件-->
<mappers>
<mapper resource="mappers/AdminMapper.xml"></mapper>
</mappers>
</configuration>數(shù)據(jù)庫連接池(POOED)
鏈接數(shù)據(jù)庫,每次訪問數(shù)據(jù)時候,創(chuàng)建一個Connection,用完關(guān)閉.但訪問量大了后,每次都要創(chuàng)建新的連接對象,用完關(guān)閉,比較耗時
使用數(shù)據(jù)庫連接池,在池(集合)中事先創(chuàng)建一些連接對象,用戶訪問時,就直接池中獲取一個鏈接對象,用完不銷毀,還回池中.這樣就減少頻繁創(chuàng)建銷毀連接對象
第四步:創(chuàng)建數(shù)據(jù)庫
create table admin( id int primary key auto_increment, account varchar(20), password varchar(20), gender CHAR(1) )
注:在數(shù)據(jù)庫中填入幾組值,方便后面使用 .
第五步:定義接口
package com.kid.mybatispro.dao;
import com.kid.mybatispro.model.Admin;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface AdminDao {
//單個參數(shù)傳遞
Admin findAdminById(int id);
Admin findAdminByAccount(int id);
//多個參數(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>代碼解讀:

注:我們可以在配置文件中為類定義別名

我們就就可以簡寫為:

第七步:測試MyBatis
第一步:讀取配置文件
讀取配置文件
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
mybatis-config.xml---->為我們定義的配置文件名(創(chuàng)建的第一個.xml文件)
第二步:創(chuàng)建 SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
read---->上面創(chuàng)建的對象
注:創(chuàng)建 SqlSessionFactory 負(fù)責(zé)創(chuàng)建SqlSession對象(連接數(shù)據(jù)庫的會話對象,類似Connection) SqlSessionFactory對象只需要創(chuàng)建一次,不需要銷毀
第三步:創(chuàng)建SqlSession
SqlSession sqlSession = sessionFactory.openSession();
第四步:獲得接口代理對象
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對象(連接數(shù)據(jù)庫的會話對象,類似Connection)
//SqlSessionFactory對象只需要創(chuàng)建一次,不需要銷毀
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//創(chuàng)建SqlSession對象
SqlSession sqlSession = sessionFactory.openSession();
//創(chuàng)建接口的代理對象
AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
Admin admin = adminDao.findAdminById(1); //讓代理對象帶我們巧用映射文件中與此接口中相同名稱的方法
System.out.println(admin);
}到此這篇關(guān)于MyBatis框架搭建與代碼解讀的文章就介紹到這了,更多相關(guān)MyBatis框架搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解idea搭建springboot+mybatis框架的教程
- 使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)
- Spring+Mybatis+Mysql搭建分布式數(shù)據(jù)庫訪問框架的方法
- 詳解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超級詳細(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)鍵詞整理,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05
maven中自定義MavenArchetype的實(shí)現(xiàn)
Maven自身提供了許多Archetype來方便用戶創(chuàng)建Project,為了避免在創(chuàng)建project時重復(fù)的拷貝和修改,我們通過自定義Archetype來規(guī)范顯得還蠻有必要,下面就來介紹一下,感興趣的可以了解一下2025-01-01
SpringCloud配置服務(wù)端的ConfigServer設(shè)置安全認(rèn)證
這篇文章主要為大家介紹了SpringCloud配置服務(wù)端的ConfigServer設(shè)置安全認(rèn)證,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
自定義SpringBoot的白標(biāo)錯誤頁面的操作方法
Spring Boot的白標(biāo)錯誤頁面是在應(yīng)用程序出現(xiàn)錯誤時(如404或500 HTTP狀態(tài)碼)自動生成的默認(rèn)錯誤頁面,下面小編給大家分享如何自定義SpringBoot的白標(biāo)錯誤頁面,感興趣的朋友跟隨小編一起看看吧2024-06-06
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)的一個開始,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11

