首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MyBatis 入門實戰:從配置到 CRUD 完整流程

     編輯:Java 相關知識

MyBatis 簡介

MyBatis 是一款優秀的持久層框架,前身為 Apache iBATIS。它支援自定義 SQL、存儲過程以及高級映射,幾乎消除了所有的 JDBC 代碼和手動設置參數、獲取結果集的工作。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生類型、介面和 Java POJO 為資料庫中的記錄。

環境準備

  • JDK 1.8+
  • MySQL 5.7+ 及 JDBC 驅動 (mysql-connector-java)
  • MyBatis 核心包 (mybatis-3.x.jar)
  • Maven 或 Gradle 管理依賴(推薦)

項目結構

src/main/java
└─ com.mybatis
   ├─ User.java          // 實體類
   ├─ UserMapper.xml     // SQL 映射文件
   └─ Test.java          // 測試類
src/main/resources
└─ mybatis-config.xml     // 全局配置文件

核心配置文件

1. mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <typeAliases>
    <typeAlias alias="User" type="com.mybatis.User"/>
  </typeAliases>

  <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/test?useSSL=false&serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <mapper resource="com/mybatis/UserMapper.xml"/>
  </mappers>
</configuration>

2. 實體類 User.java

package com.mybatis;

public class User {
    private int id;
    private String name;
    private String password;

    // 無參構造器、Getter/Setter、toString 省略
}

3. SQL 映射文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="UserMapper">
  <select id="selectUser" parameterType="int" resultType="User">
    SELECT id, name, password FROM user WHERE id = #{id}
  </select>

  <select id="selectUsers" resultType="User">
    SELECT id, name, password FROM user
  </select>

  <insert id="insertUser" parameterType="User">
    INSERT INTO user(name, password) VALUES(#{name}, #{password})
  </insert>

  <update id="updateUser" parameterType="User">
    UPDATE user SET name=#{name}, password=#{password} WHERE id=#{id}
  </update>

  <delete id="deleteUser" parameterType="int">
    DELETE FROM user WHERE id = #{id}
  </delete>
</mapper>

測試驗證

package com.mybatis;

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 java.io.IOException;
import java.io.Reader;
import java.util.List;

public class Test {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

        try (SqlSession session = sqlSessionFactory.openSession()) {
            // 單條查詢
            User user = session.selectOne("selectUser", 1);
            System.out.println("單條查詢: " + user);

            // 列表查詢
            List<User> users = session.selectList("selectUsers");
            users.forEach(System.out::println);

            // 新增
            User newUser = new User();
            newUser.setName("測試用戶");
            newUser.setPassword("123456");
            session.insert("insertUser", newUser);
            session.commit(); // 別忘了提交事務
            System.out.println("新增後 ID: " + newUser.getId());
        }
    }
}

進階技巧與最佳實踐

  1. 使用 Mapper 介面:定義 UserMapper.java 介面,配合註解或 XML,獲取類型安全的調用體驗。
  2. 結果映射:複雜關聯查詢時使用 <resultMap> 解決字段名不一致、一對多嵌套等問題。
  3. 動態 SQL:善用 <where>, <if>, <foreach> 等標籤構建靈活查詢條件。
  4. 分頁插件:整合 PageHelper 實現物理分頁,避免全量查詢導致 OOM。
  5. 事務管理:生產環境建議結合 Spring 統一管理事務,而非手動 commit/rollback。

總結

MyBatis 以「SQL 為中心」的設計理念,給予開發者充分的 SQL 控制權,同時大幅減少樣板代碼。掌握「配置 → 映射 → 執行」核心流程,配合動態 SQL、結果映射等進階特性,即可高效完成企業級持久層開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved