基于 MyBatis 框架 的完整開發流程與順序
一、環境準備階段
1. 新建 Maven 項目(或普通 Java 項目)
作用:用 Maven 統一管理依賴,自動下載 MyBatis、MySQL 驅動等 Jar 包
操作
:
IDE(如 IDEA)選
Maven Archetype
(或直接建空項目),填groupId
、artifactId
(如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&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
必須和接口方法名一致parameterType
、resultType
要和實際類型對應
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
四、常見問題排查順序
如果運行報錯,按以下順序排查:
檢查依賴:
pom.xml
里的依賴是否下載成功(看External Libraries
里有沒有 MyBatis、MySQL 驅動)檢查配置:
mybatis-config.xml
的數據庫連接是否正確(能連上網、用戶名密碼對)檢查映射:
UserMapper.xml
的namespace
、id
是否和接口對應,SQL 語法是否正確檢查測試:測試類里的
SqlSession
是否正確獲取,事務是否提交看日志 / 報錯:MyBatis 報錯信息很詳細(如
Invalid bound statement
就是映射沒找到)
完整開發順序總結
按這個流程走,從環境搭建到功能實現、測試,就能完整開發一個 MyBatis 項目核心是 “接口 + XML 映射” 的解耦思想,多練幾遍👍