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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...