基于 Mybatis 框架*的完整開發流程與順序

基于 MyBatis 框架 的完整開發流程與順序

一、環境準備階段

1. 新建 Maven 項目(或普通 Java 項目)
  • 作用:用 Maven 統一管理依賴,自動下載 MyBatis、MySQL 驅動等 Jar 包

  • 操作

    • IDE(如 IDEA)選 Maven Archetype(或直接建空項目),填 groupIdartifactId(如 Mybatis1

    • 若手動建項目,需自己整理目錄結構

2. 配置 pom.xml(Maven 依賴)
  • 作用:引入 MyBatis 核心庫、MySQL 驅動、JUnit(測試用)

  • 關鍵依賴

    <!-- MyBatis 核心 -->
    <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.19</version>
    </dependency>
    <!-- MySQL 驅動 -->
    <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
    </dependency>
    <!-- JUnit 測試 -->
    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
    </dependency>
  • 注意

    • 解決資源導出問題(如 src/main/java 里的 XML 映射文件),需在 pom.xml 里配置 <build> 資源過濾

3. 編寫 MyBatis 核心配置(mybatis-config.xml
  • 作用:全局配置 MyBatis(數據源、事務、Mapper 掃描等)

  • 關鍵內容

    <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/mybatis?useSSL=false&amp;serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!-- 注冊 Mapper 映射文件 --><mappers><mapper resource="com/lyj/dao/UserMapper.xml"/></mappers>
    </configuration>
  • 注意

    • url 里的數據庫名(mybatis)、用戶名、密碼要和實際一致

    • mappers 里的 resource 路徑要和 XML 映射文件位置對應


二、業務功能開發階段

1. 定義實體類(POJO):User.java
  • 作用:映射數據庫表字段,封裝查詢結果

  • 示例

    public class User {private int id;private String name;private String pwd;// 構造方法、Getter/Setter、toString()
    }
  • 注意:屬性名盡量和數據庫字段名一致(或用 resultMap 處理映射)

2. 編寫 Mapper 接口:UserDao.java
  • 作用:定義數據庫操作方法(面向接口編程)

  • 示例

    public interface UserDao {List<User> getUserList(); // 查詢所有用戶User getUserById(int id); // 按 ID 查詢int addUser(User user); // 新增用戶int updateUser(User user); // 修改用戶
    }
  • 注意:方法名要和 XML 映射文件里的 id 一致

3. 編寫 SQL 映射文件:UserMapper.xml
  • 作用:編寫具體 SQL,綁定 Mapper 接口方法

  • 示例

    <mapper namespace="com.lyj.dao.UserDao"><!-- 查詢所有 --><select id="getUserList" resultType="com.lyj.pojo.User">select * from mybatis.user</select><!-- 按 ID 查詢 --><select id="getUserById" parameterType="int" resultType="com.lyj.pojo.User">select * from mybatis.user where id = #{id}</select><!-- 新增 --><insert id="addUser" parameterType="com.lyj.pojo.User">insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd})</insert><!-- 修改 --><update id="updateUser" parameterType="com.lyj.pojo.User">update mybatis.user set name=#{name}, pwd=#{pwd} where id=#{id}</update>
    </mapper>
  • 注意

    • namespace 必須是 Mapper 接口的全限定名

    • id 必須和接口方法名一致

    • parameterTyperesultType 要和實際類型對應

4. 編寫工具類:MybatisUtils.java
  • 作用:簡化 SqlSession 獲取,避免重復代碼

  • 示例

    public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {// 加載核心配置String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}// 獲取 SqlSession(手動提交事務)public static SqlSession getSqlSession() {return sqlSessionFactory.openSession();}
    }
  • 注意openSession(true) 可開啟自動提交(根據需求選)


三、測試階段

1. 編寫 JUnit 測試類:UserDaoTest.java
  • 作用:驗證 Mapper 接口方法是否正確

  • 示例

    public class UserDaoTest {@Testpublic void testGetUserList() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao userDao = sqlSession.getMapper(UserDao.class);List<User> userList = userDao.getUserList();for (User user : userList) {System.out.println(user);}sqlSession.close();}@Testpublic void testAddUser() {SqlSession sqlSession = MybatisUtils.getSqlSession();UserDao userDao = sqlSession.getMapper(UserDao.class);int result = userDao.addUser(new User(5, "測試用戶", "123456"));if (result > 0) {System.out.println("插入成功!");sqlSession.commit(); // 手動提交事務}sqlSession.close();}
    }
  • 注意

    • 增刪改操作需手動提交事務(sqlSession.commit()

    • 測試完及時關閉 SqlSession


四、常見問題排查順序

如果運行報錯,按以下順序排查:

  1. 檢查依賴pom.xml 里的依賴是否下載成功(看 External Libraries 里有沒有 MyBatis、MySQL 驅動)

  2. 檢查配置mybatis-config.xml 的數據庫連接是否正確(能連上網、用戶名密碼對)

  3. 檢查映射UserMapper.xmlnamespaceid 是否和接口對應,SQL 語法是否正確

  4. 檢查測試:測試類里的 SqlSession 是否正確獲取,事務是否提交

  5. 看日志 / 報錯:MyBatis 報錯信息很詳細(如 Invalid bound statement 就是映射沒找到)


完整開發順序總結

按這個流程走,從環境搭建到功能實現、測試,就能完整開發一個 MyBatis 項目核心是 “接口 + XML 映射” 的解耦思想,多練幾遍👍

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91978.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91978.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91978.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機械學習--決策樹(實戰案例)

決策樹分兩種分類和回歸&#xff0c;這篇博客我將對兩種方法進行實戰講解一、分類決策樹代碼的核心任務是預測 “電信客戶流失狀態”&#xff0c;這是一個典型的分類任務數據集附在該博客上&#xff0c;可以直接下載代碼整體結構整理代碼主要分為以下幾個部分&#xff1a;導入必…

SQL154 插入記錄(一)

描述牛客后臺會記錄每個用戶的試卷作答記錄到exam_record表&#xff0c;現在有兩個用戶的作答記錄詳情如下&#xff1a;用戶1001在2021年9月1日晚上10點11分12秒開始作答試卷9001&#xff0c;并在50分鐘后提交&#xff0c;得了90分&#xff1b;用戶1002在2021年9月4日上午7點1分…

BeanFactory 和 ApplicationContext 的區別?

口語化答案好的&#xff0c;面試官。BeanFactory和ApplicationContext都是用于管理Bean的容器接口。BeanFactory功能相對簡單。提供了Bean的創建、獲取和管理功能。默認采用延遲初始化&#xff0c;只有在第一次訪問Bean時才會創建該Bean。因為功能較為基礎&#xff0c;BeanFact…

VNC連接VirtualBox中的Ubuntu24.04 desktop圖形化(GUI)界面

測試環境&#xff1a;VirtualBox 7,Ubuntu24.04 desktop,Ubuntu24.04 server(no desktop) 一、下載和安裝dRealVNC viewer。 二、配置 VirtualBox 網絡&#xff1a;NAT 模式 端口轉發 1、打開 VirtualBox&#xff0c;選擇您的 Ubuntu 虛擬機&#xff0c;點擊 設置。 選擇 網…

浮動路由和BFD配置

拓撲圖 前期的拓撲圖沒有交換機配置步驟 1、配置IP地址 終端IP地址的配置 路由器IP地址的配置 配置router的對應接口的IP地址 <Huawei>sys [Huawei]sysname router [router]interface Ethernet 0/0/0 [router-Ethernet0/0/0]ip address 192.168.10.254 24 [router-Ethern…

Docker 實戰 -- Nextcloud

文章目錄前言1. 創建 docker-compose.yml2. 啟動 Nextcloud3. 訪問 Nextcloud4. 配置優化&#xff08;可選&#xff09;使用 PostgreSQL使用 redis添加 Cron 后臺任務5. 常用命令6. 反向代理&#xff08;Nginx/Apache&#xff09;前言 當你迷茫的時候&#xff0c;請點擊 Docke…

【計算機網絡 | 第2篇】計算機網絡概述(下)

文章目錄七.因特網服務提供商&#x1f95d;八.接入網&#x1f95d;主流的家庭寬帶接入方式介入網工作原理&#x1f9d0;DSL技術&#xff1a;銅線上的“三通道”通信DSL的速率標準呈現出顯著的"不對稱"特征&#x1f914;電纜互聯網接入技術&#x1f34b;?&#x1f7e…

SpringMVC 6+源碼分析(四)DispatcherServlet實例化流程 3--(HandlerAdapter初始化)

一、概述 HandlerAdapter 是 Spring MVC 框架中的一個核心組件&#xff0c;它在 DispatcherServlet 和處理程序&#xff08;handler&#xff09;之間扮演適配器的角色。DispatcherServlet 接收到 HTTP 請求后&#xff0c;需要調用對應的 handler 來處理請求&#xff08;如控制器…

【lucene】FastVectorHighlighter案例

下面給出一套可直接拷貝運行的 Lucene 8.5.0 FastVectorHighlighter 完整示例&#xff08;JDK 8&#xff09;&#xff0c;演示從建索引、查詢到高亮的全過程。 > 關鍵點&#xff1a;字段必須 1. 存儲原始內容&#xff08;setStored(true)&#xff09; 2. 開啟 TermVecto…

C++返回值優化(RVO):高效返回對象的藝術

在C開發中&#xff0c;按值返回對象的場景十分常見&#xff08;如運算符重載、工廠函數等&#xff09;&#xff0c;但開發者常因擔憂“構造/析構的性能開銷”而陷入糾結&#xff1a;該不該返回對象&#xff1f;如何避免額外成本&#xff1f;本文將剖析痛點、拆解錯誤思路&#…

用 PyTorch 實現一個簡單的神經網絡:從數據到預測

PyTorch 是目前最流行的深度學習框架之一&#xff0c;以其靈活性和易用性受到開發者的喜愛。本文將帶你從零開始&#xff0c;用 PyTorch 實現一個簡單的神經網絡&#xff0c;用于解決經典的 MNIST 手寫數字分類問題。我們將涵蓋數據準備、模型構建、訓練和預測的完整流程&#…

四級頁表通俗講解與實踐(以 64 位 ARM Cortex-A 為例)

&#x1f4d6; &#x1f3a5; B 站博文精講視頻&#xff1a;點擊鏈接&#xff0c;配合視頻深度學習 四級頁表通俗講解與實踐&#xff08;以 64 位 ARM Cortex-A 為例&#xff09; 本文面向希望徹底理解現代 64 位架構下四級頁表的開發者&#xff0c;結合 ARM Cortex-A 系列處理…

AI模型整合包上線!一鍵部署ComfyUI,2.19TB模型全解析

最近體驗了AIStarter平臺上線的AI模型整合包&#xff0c;包含2.19TB ComfyUI大模型&#xff0c;整合市面主流模型&#xff0c;一鍵部署ComfyUI&#xff0c;省去重復下載煩惱&#xff01;以下是使用心得和部署步驟&#xff0c;適合AI開發者參考。工具亮點這款AI模型整合包由熊哥…

灰色優選模型及算法MATLAB代碼

電子裝備試驗方案優選是一個典型的多屬性決策問題&#xff0c;通常涉及指標復雜、信息不完整、數據量少且存在不確定性的特點。灰色系統理論&#xff08;Grey System Theory&#xff09;特別擅長處理“小樣本、貧信息”的不確定性問題&#xff0c;因此非常適合用于此類方案的優…

AI框架工具FastRTC快速上手6——視頻流案例之物體檢測(下)

一 前言 上一篇,我們實現了用YOLO對圖片上的物體進行檢測,并在圖片上框出具體的對象并打出標簽。但只是應用在單張圖片,且還沒用上FastRTC。 本篇,我們希望結合FastRTC的能力,實現基于YOLO的實時視頻流的物體檢測。 本篇文字將不會太多。學習完本篇,對比前面的文章,你…

PHP常見中高面試題匯總

一、 PHP部分 1、PHP如何實現靜態化 PHP的靜態化分為&#xff1a;純靜態和偽靜態。其中純靜態又分為&#xff1a;局部純靜態和全部純靜態。 PHP偽靜態&#xff1a;利用Apache mod_rewrite實現URL重寫的方法&#xff1b; PHP純靜態&#xff0c;就是生成HTML文件的方式&#xff0…

基于Java AI(人工智能)生成末日題材的實踐

Java AI 生成《全球末日》文章的實例 使用Java結合AI技術生成《全球末日》題材的文章可以通過多種方式實現,包括調用預訓練模型、使用自然語言處理庫或結合生成式AI框架。以下是30個實例的生成方法和示例代碼片段。 調用預訓練模型(如GPT-3或GPT-4) 使用OpenAI API生成末日…

針對軟件定義車載網絡的動態服務導向機制

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

Pytorch實現嬰兒哭聲檢測和識別

Pytorch實現嬰兒哭聲檢測和識別 目錄 Pytorch實現嬰兒哭聲檢測識別 1. 項目說明 2. 數據說明 &#xff08;1&#xff09;嬰兒哭聲語音數據集 &#xff08;2&#xff09;自定義數據集 3. 模型訓練 &#xff08;1&#xff09;項目安裝 &#xff08;2&#xff09;準備Tra…

海信IP810N/海信IP811N_海思MV320-安卓9.0主板-TTL燒錄包-可救磚

海信IP810N&#xff0f;海信IP811N_海思MV320處理器-安卓9主板-TTL燒錄包-可救磚準備工作&#xff1a;TTL線自備跑碼工具【putty跑碼中文版】路徑&#xff1a;【工具大全】-【putty跑碼中文版】測試跑碼以后將跑碼窗口關閉&#xff1b;然后到下方下載燒錄工具并大致看下教程燒錄…