最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis框架之工廠模式(Factory Pattern)

 更新時間:2024年11月19日 10:03:53   作者:Katie。  
MyBatis中使用工廠模式來管理和創(chuàng)建SqlSession對象,從而簡化數據庫訪問的配置和管理過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

MyBatis 中的工廠模式(Factory Pattern)主要體現在 SqlSessionFactory 和 SqlSession 的使用上。MyBatis 使用工廠模式來管理和創(chuàng)建 SqlSession 對象,從而簡化數據庫訪問的配置和管理過程。下面將詳細介紹 MyBatis 中的工廠模式的原理和實現。

1. 什么是工廠模式 (Factory Pattern)?

工廠模式 是一種創(chuàng)建型設計模式,它提供了一種創(chuàng)建對象的方式,使得客戶端無需指定對象的具體類名,而是通過一個統一的接口來創(chuàng)建對象。這種模式通過定義一個工廠類來封裝對象的創(chuàng)建過程,可以將對象的創(chuàng)建與使用解耦,從而提高代碼的靈活性和可維護性。

2. MyBatis 中的工廠模式實現

在 MyBatis 中,SqlSessionFactory 就是一個典型的工廠模式的實現。它負責創(chuàng)建和管理 SqlSession 對象。SqlSession 是 MyBatis 提供的用于操作數據庫的核心接口。

2.1 SqlSessionFactory 的角色

  • SqlSessionFactory:充當工廠類,用于創(chuàng)建 SqlSession 對象。SqlSession 是一個會話對象,用于執(zhí)行 SQL 語句、獲取 Mapper 接口實例、以及管理事務。
  • SqlSessionFactoryBuilder:是創(chuàng)建 SqlSessionFactory 的工具類。它負責解析 MyBatis 配置文件,并基于這些配置創(chuàng)建 SqlSessionFactory。

3. MyBatis 工廠模式的實現步驟

以下是 MyBatis 工廠模式的實現步驟:

3.1 創(chuàng)建 MyBatis 配置文件 (mybatis-config.xml)

這是 MyBatis 的全局配置文件,用于設置數據源、環(huán)境和其他配置信息。

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

3.2 創(chuàng)建 Mapper 接口 (UserMapper.java)

Mapper 接口定義了數據庫操作方法。

package com.example.mapper;

import com.example.model.User;
import java.util.List;

public interface UserMapper {
    List<User> getAllUsers();
    User getUserById(int id);
}

3.3 編寫 Mapper XML 文件 (UserMapper.xml)

定義 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="com.example.mapper.UserMapper">
    <select id="getAllUsers" resultType="com.example.model.User">
        SELECT * FROM users;
    </select>
    <select id="getUserById" parameterType="int" resultType="com.example.model.User">
        SELECT * FROM users WHERE id = #{id};
    </select>
</mapper>

3.4 使用 SqlSessionFactoryBuilder 創(chuàng)建 SqlSessionFactory

在 Java 應用程序中,使用 SqlSessionFactoryBuilder 創(chuàng)建 SqlSessionFactory,并通過 SqlSessionFactory 獲取 SqlSession。

import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.example.mapper.UserMapper;
import com.example.model.User;
import java.util.List;

public class MyBatisExample {
    public static void main(String[] args) {
        String resource = "mybatis-config.xml";
        try (InputStream inputStream = Resources.getResourceAsStream(resource)) {
            // 1. 創(chuàng)建 SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            
            // 2. 從工廠獲取 SqlSession
            try (SqlSession session = sqlSessionFactory.openSession()) {
                // 3. 獲取 Mapper 接口的實現
                UserMapper userMapper = session.getMapper(UserMapper.class);
                
                // 4. 調用方法執(zhí)行 SQL
                List<User> users = userMapper.getAllUsers();
                users.forEach(user -> System.out.println(user.getName()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. MyBatis 工廠模式的工作流程

  • SqlSessionFactoryBuilder 解析 MyBatis 配置文件 (mybatis-config.xml) 并構建 SqlSessionFactory 對象。
  • SqlSessionFactory 負責創(chuàng)建和管理 SqlSession 對象。
  • SqlSession 提供用于執(zhí)行 SQL 語句、獲取 Mapper 接口、提交或回滾事務的功能。
  • 通過 SqlSession.getMapper() 方法獲取 Mapper 接口的實現類,從而執(zhí)行 SQL 操作。

5. 工廠模式帶來的好處

  • 解耦:客戶端代碼只依賴于 SqlSessionFactory 和 SqlSession 接口,減少了與底層實現的耦合。
  • 資源管理:通過工廠模式,SqlSessionFactory 可以更好地管理數據庫連接資源(如連接池)。
  • 代碼簡潔:使用工廠模式,可以更輕松地創(chuàng)建和管理 SqlSession 對象,減少了重復代碼。

6. 總結

MyBatis 通過 SqlSessionFactory 實現了工廠模式,用于創(chuàng)建 SqlSession 對象。工廠模式的使用,使得 MyBatis 的數據庫訪問層更加靈活、簡潔,同時也提高了應用程序的可維護性和擴展性。使用工廠模式,開發(fā)者可以更方便地管理數據庫連接和事務操作,從而專注于業(yè)務邏輯的實現。

到此這篇關于Mybatis框架之工廠模式(Factory Pattern)的文章就介紹到這了,更多相關Mybatis 工廠模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • Java如何批量執(zhí)行datax腳本

    Java如何批量執(zhí)行datax腳本

    這篇文章主要介紹了Java如何批量執(zhí)行datax腳本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • java多線程開啟的三種方式你知道嗎

    java多線程開啟的三種方式你知道嗎

    這篇文章主要為大家詳細介紹了java多線程開啟的三種方式,使用數據庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>
    2022-02-02
  • java 讀取excel文件轉換成json格式的實例代碼

    java 讀取excel文件轉換成json格式的實例代碼

    這篇文章主要介紹了 java 讀取excel文件轉換成json格式的實例代碼,需要的朋友可以參考下
    2018-04-04
  • Spring Cloud Zuul路由規(guī)則動態(tài)更新解析

    Spring Cloud Zuul路由規(guī)則動態(tài)更新解析

    這篇文章主要介紹了Spring Cloud Zuul路由規(guī)則動態(tài)更新解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 詳解Springboot-MyBatis配置-配置端口號與服務路徑(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin)

    詳解Springboot-MyBatis配置-配置端口號與服務路徑(idea社區(qū)版2023.1.4+apache-mav

    這篇文章主要介紹了Springboot-MyBatis配置-配置端口號與服務路徑(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • 利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程

    利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程

    大家應該都知道Idea社區(qū)版本,默認是不能創(chuàng)建SpringBoot項目的,下面這篇文章主要給大家介紹了關于利用IDEA社區(qū)版創(chuàng)建SpringBoot項目的詳細圖文教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • Java中數組的定義和使用教程(一)

    Java中數組的定義和使用教程(一)

    這篇文章主要給大家介紹了關于Java中數組的定義和使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java把Map轉為對象的實現代碼

    Java把Map轉為對象的實現代碼

    在項目開發(fā)中,經常碰到map轉實體對象或者對象轉map的場景,工作中,很多時候我們可能比較喜歡使用第三方jar包的API對他們進行轉化,但這里,我想通過反射的方式對他們做轉化,感興趣的同學跟著小編來看看吧
    2023-08-08
  • Java如何做帶復選框的菜單實例代碼

    Java如何做帶復選框的菜單實例代碼

    大家好,本篇文章主要講的是Java如何做帶復選框的菜單實例代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java在PowerPoint幻燈片中創(chuàng)建散點圖的方法

    Java在PowerPoint幻燈片中創(chuàng)建散點圖的方法

    散點圖是通過兩組數據構成多個坐標點,考察坐標點的分布,判斷兩變量之間是否存在某種關聯或總結坐標點的分布模式,這篇文章主要介紹了Java如何在PowerPoint幻燈片中創(chuàng)建散點圖,需要的朋友可以參考下
    2023-04-04

最新評論

青田县| 平昌县| 正定县| 萨嘎县| 当涂县| 万宁市| 金溪县| 吴旗县| 海口市| 斗六市| 东乡县| 新干县| 新乡市| 张家界市| 晋中市| 陇南市| 桦南县| 阿瓦提县| 准格尔旗| 房产| 宝坻区| 兴海县| 银川市| 兴隆县| 治县。| 吉安县| 德令哈市| 林甸县| 乌苏市| 临夏市| 诸暨市| 铜川市| 道孚县| 元江| 北碚区| 徐州市| 武陟县| 舞钢市| 额尔古纳市| 泰顺县| 大悟县|