mybatis案常式序

来源:https://www.cnblogs.com/yulingzhiling/p/18099119
-Advertisement-
Play Games

前置工作 導包(mysql-connector-java、mybatis) 實體類 Mapper層 1.介面 public interface BookMapper { public Book getBookById(Integer bookID); } 2.創建Mapper的映射文件 <?xml ...


前置工作

  • 導包(mysql-connector-java、mybatis)
  • 實體類

Mapper層

1.介面

public interface BookMapper {
    public Book getBookById(Integer bookID);
}

2.創建Mapper的映射文件

<?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.ylzl.mapper.BookMapper">
    <select id="getBookById" resultType="com.ylzl.pojo.Book">
        select * from books where bookID=#{bookID}
    </select>
</mapper>

Service層

可以不使用Service層,使用其他方式包含以下核心代碼也可以。

核心代碼

static {
  String resource = "mybatis-config.xml";
  try {
    InputStream inputStream = Resources.getResourceAsStream(resource);
  } catch (IOException e) {
    e.printStackTrace();
  }
}

//1.讀取xml配置文件,創建SqlSessionFactory對象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//2.通過創建SqlSessionFactory對象獲取SqlSession對象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3.通過SqlSession對象獲取代理對象mapper,傳入介面class對象
BookMapper mapper=sqlSession.getMapper(BookMapper.class);
//4.通過mapper調用介面對應方法
mapper.getBookById(bookID);

以下為使用Service層實現的方式

1.介面

public interface BookService {
    Book getBookById(Integer bookID);
}

2.介面實現類(重點關註)

public class BookServiceImpl implements BookService{
    static InputStream inputStream = null;
    static {
        String resource = "mybatis-config.xml";
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //1.讀取xml配置文件,創建SqlSessionFactory對象
    private final SqlSessionFactory sqlSessionFactory
            = new SqlSessionFactoryBuilder().build(inputStream);

    @Override
    public Book getBookById(Integer bookID) {
        //2.通過創建SqlSessionFactory對象獲取SqlSession對象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3.通過SqlSession對象獲取代理對象mapper,傳入介面class對象,
        BookMapper mapper = sqlSession.getMapper(BookMapper.class);
        //4.通過mapper調用介面對應方法
        return  mapper.getBookById(bookID);
    }
}

Mybatis配置文件mybatis-config.xml(重點關註)

<?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.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/ssmbuild"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置映射文件-->
    <mappers>
        <mapper resource="com/ylzl/mapper/BookMapper.xml"/>
    </mappers>
</configuration>

測試

BookService bookServicelmpl = new BookServiceImpl();
System.out.println(bookServicelmpl.getBookById(2));

遇到的問題

1.BookMapper.xml不放在resources下,加過濾

  <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

2.解決xml編碼問題:1 位元組的 UTF-8 序列的位元組 1 無效:https://www.cnblogs.com/thetree/p/12991403.html

作者:御靈之靈 轉載請註明原文鏈接:https://www.cnblogs.com/yulingzhiling/p/18099119 若標題中有“轉載”字樣,則本文版權歸原作者所有。若無轉載字樣,本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利.
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 你知道v-model指令是如何變成組件上的modelValue屬性和@update:modelValue事件呢?這一過程是在編譯時還是運行時進行的呢? ...
  • IO
    IO 所有輸入流的基類:InputStream / Reader 所有輸出流的基類:OutputStream / Writer 位元組流 InputStream常用方法:read(), skip(), available(), close() FileInputStream DataInputStre ...
  • 拓展閱讀 blog-engine-01-常見博客引擎 jekyll/hugo/Hexo/Pelican/Gatsby/VuePress/Nuxt.js/Middleman 對比 blog-engine-02-通過博客引擎 jekyll 構建 github pages 博客實戰筆記 blog-engi ...
  • 模型功能 實現寄存器之間的連線 實現寄存器的聲明 建構時鐘的時序系統 模型框圖 `timescale 1ns / 1ps /* */ // ******************************************************************************* ...
  • C++ 運算符 運算符用於對變數和值執行操作。 在下麵的示例中,我們使用 + 運算符將兩個值相加: int x = 100 + 50; 雖然 + 運算符經常用於將兩個值相加,就像上面的示例一樣,但它也可以用於將變數和一個值相加,或者將一個變數和另一個變數相加: int sum1 = 100 + 50 ...
  • 前置工作 導包(mybatis-spring、mysql-connector-java、mybatis、spring-webmvc等) 實體類 DAO層兩個文件(介面、xml文件);Service層的介面 編寫Spring管理mybatis的xml-spring-dao.xml 核心代碼(兩種方式實 ...
  • 數據來源分析 網站鏈接: aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvZGlzY292ZXIvdG9wbGlzdD9pZD0zNzc4Njc4 音樂數據包分析 正常流程抓包分析數據, 找到音頻鏈接 找到歌曲信息對應數據包 分析加密參數位置 找到對應的加密位置, 其餘就去扣 ...
  • 一、 智能文檔處理介紹 智能文檔處理(Intelligent Document Processing, IDP)是利用人工智慧(AI)、機器學習(ML)、電腦視覺(CV)、自然語言處理(NLP)等技術自動化地捕獲、理解、處理和分析文檔內容的過程。不同於傳統的文檔管理系統,IDP能夠處理結構化、半結 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...