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

Windows 搭建 Java + MyBatis + MySQL 開發環境全流程指南

     編輯:Java 相關知識

環境準備清單

組件版本建議下載來源
JDK1.8+ (推薦 11/17 LTS)Oracle / Adoptium
IDEEclipse IDE for Java EE / IntelliJ IDEA官網
MySQL5.7 / 8.0MySQL 官網
MyBatis 核心包3.5.xMaven Central / GitHub
MySQL 驅動8.0.x (mysql-connector-j)Maven Central

項目結構規範

MybatisDemo
├── src
│   ├── david.mybatis.demo      // 測試代碼、工具類
│   └── david.mybatis.model     // 實體類
├── config                      // MyBatis 全局配置文件
├── mapper                      // SQL 映射文件
└── lib                         // 手動管理 JAR 包(非 Maven 項目)

核心配置文件詳解

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 type="david.mybatis.model.Visitor" alias="Visitor"/>
    <!-- 批量掃描包下所有實體 -->
    <package name="david.mybatis.model"/>
  </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://127.0.0.1:3306/mybatis_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>

  <!-- 映射器掃描 -->
  <mappers>
    <package name="david.mybatis.mapper"/>
  </mappers>
</configuration>

關鍵配置說明

  • dataSource type="POOLED":啟用連接池,生產環境必備
  • MySQL 8.0+ 驅動類:com.mysql.cj.jdbc.Driver(舊版為 com.mysql.jdbc.Driver)
  • URL 參數:useSSL=false 禁用 SSL,serverTimezone 避免時區警告
  • mapper 掃描:<package> 批量註冊,避免逐個配置

2. 數據庫表結構初始化

CREATE DATABASE mybatis_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE mybatis_db;

CREATE TABLE Visitor (
  Id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Name VARCHAR(100) NOT NULL,
  Email VARCHAR(100) NOT NULL,
  Status INT NOT NULL DEFAULT 1,
  CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE Website (
  Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(100) NOT NULL,
  VisitorId INT,
  Status INT NOT NULL DEFAULT 1,
  CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (VisitorId) REFERENCES Visitor(Id)
);

CREATE TABLE Channel (
  Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  Name VARCHAR(100) NOT NULL,
  WebsiteId INT,
  Status INT NOT NULL DEFAULT 1,
  CreateTime DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (WebsiteId) REFERENCES Website(Id)
);

核心工具類實現

MybatisUtils.java - Session 管理

public class MybatisUtils {
    private static final String CONFIG = "config/mybatis-config.xml";
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try (InputStream is = Resources.getResourceAsStream(CONFIG)) {
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            throw new ExceptionInInitializerError("MyBatis 初始化失敗: " + e.getMessage());
        }
    }

    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession(); // 非自動提交
    }

    public static void closeSession(SqlSession session) {
        if (session != null) session.close();
    }
}

實體類示例

public class Visitor {
    private int id;
    private String name;
    private String email;
    private int status;
    private Date createTime;
    // 構造器、getter/setter、toString...
}

Mapper 接口與 XML

// IVisitorOperation.java
public interface IVisitorOperation {
    Visitor basicQuery(int id);
}
<!-- VisitorMapper.xml -->
<mapper namespace="david.mybatis.demo.IVisitorOperation">
  <select id="basicQuery" parameterType="int" resultType="Visitor">
    select * from Visitor where id = #{id} and Status > 0
  </select>
</mapper>

Hello World 測試

public class App {
    public static void main(String[] args) {
        SqlSession session = MybatisUtils.getSqlSession();
        try {
            IVisitorOperation mapper = session.getMapper(IVisitorOperation.class);
            Visitor visitor = mapper.basicQuery(1);
            System.out.println("查詢結果: " + visitor);
        } finally {
            MybatisUtils.closeSession(session);
        }
    }
}

常見坑點與解決方案

問題現象原因分析解決方案
Loading class com.mysql.jdbc.Driver 失敗MySQL 8.0+ 驅動類名變更改用 com.mysql.cj.jdbc.Driver
CST 時區警告 / 時間差 8 小時JDBC URL 缺少 serverTimezone添加 serverTimezone=Asia/Shanghai
Mapper 找不到 / BindingExceptionnamespace 與接口全限定名不一致嚴格對應 namespace = 接口全名
中文亂碼字符集配置缺失URL 添加 useUnicode=true&characterEncoding=utf8,表用 utf8mb4
自增主鍵回填失效缺少 useGeneratedKeys/keyPropertyinsert 標籤添加 useGeneratedKeys="true" keyProperty="id"

Maven 依賴管理(推薦)

<dependencies>
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.13</version>
  </dependency>
  <dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.9</version>
  </dependency>
</dependencies>

總結

MyBatis 環境搭建的核心在於:配置文件規範(typeAliases、environments、mappers)、數據庫連接正確(驅動版本匹配、URL 參數完整)、Mapper 映射精準(namespace/id/類型嚴格對應)。建議採用 Maven 管理依賴,使用 <package> 批量掃描減少配置錯誤。完成 Hello World 後,即可進階學習動態 SQL、關聯映射、分頁插件、緩存機制等核心特性。

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