MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 對象)映射成數(shù)據(jù)庫中的記錄。本教程將帶領(lǐng)你逐步入門 MyBatis,讓你快速掌握其基本使用方法。
1. 環(huán)境準(zhǔn)備
在開始使用 MyBatis 之前,我們需要搭建好開發(fā)環(huán)境。首先,你需要安裝 Java 開發(fā)工具包(JDK),建議使用 JDK 8 及以上版本。其次,你需要一個集成開發(fā)環(huán)境(IDE),如 IntelliJ IDEA 或 Eclipse。最后,我們需要引入 MyBatis 的依賴。如果你使用 Maven 進(jìn)行項目管理,可以在 pom.xml 文件中添加以下依賴:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>如果你使用 Gradle,可以在 build.gradle 文件中添加以下依賴:
implementation 'org.mybatis:mybatis:3.5.9'
2. 數(shù)據(jù)庫準(zhǔn)備
為了演示 MyBatis 的使用,我們需要創(chuàng)建一個簡單的數(shù)據(jù)庫和表。假設(shè)我們使用 MySQL 數(shù)據(jù)庫,創(chuàng)建一個名為 mybatis_demo 的數(shù)據(jù)庫,并在其中創(chuàng)建一個名為 users 的表,表結(jié)構(gòu)如下:
CREATE DATABASE mybatis_demo;
USE mybatis_demo;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT
);3. 創(chuàng)建 Java 實體類
在 Java 項目中,我們需要創(chuàng)建一個與數(shù)據(jù)庫表對應(yīng)的實體類。在這個例子中,我們創(chuàng)建一個 User 類,代碼如下:
public class User {
private Integer id;
private String name;
private Integer age;
// 構(gòu)造方法、Getter 和 Setter 方法
public User() {}
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}4. 創(chuàng)建 MyBatis 配置文件
MyBatis 需要一個配置文件來配置數(shù)據(jù)庫連接、映射文件等信息。創(chuàng)建一個名為 mybatis-config.xml 的文件,內(nèi)容如下:
<?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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/>
<property name="username" value="root"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>在上述配置文件中,我們配置了數(shù)據(jù)庫連接信息和映射文件的位置。需要注意的是,你需要將 your_password 替換為你自己的數(shù)據(jù)庫密碼。
5. 創(chuàng)建映射文件
映射文件用于定義 SQL 語句和 Java 方法的映射關(guān)系。創(chuàng)建一個名為 UserMapper.xml 的文件,內(nèi)容如下:
<?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.example.mapper.UserMapper">
<insert id="insertUser" parameterType="com.example.entity.User">
INSERT INTO users (name, age) VALUES (#{name}, #{age})
</insert>
<select id="getUserById" parameterType="int" resultType="com.example.entity.User">
SELECT * FROM users WHERE id = #{id}
</select>
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>在這個映射文件中,我們定義了四個 SQL 語句:添加、查詢、更新和刪除。每個 SQL 語句都有一個唯一的 id,用于在 Java 代碼中調(diào)用。
6. 創(chuàng)建 Mapper 接口
為了方便調(diào)用映射文件中的 SQL 語句,我們可以創(chuàng)建一個 Mapper 接口。創(chuàng)建一個名為 UserMapper 的接口,代碼如下:
package com.example.mapper;
import com.example.entity.User;
public interface UserMapper {
void insertUser(User user);
User getUserById(int id);
void updateUser(User user);
void deleteUser(int id);
}這個接口中的方法名和參數(shù)類型需要與映射文件中的 id 和 parameterType 保持一致。
7. 使用 MyBatis 進(jìn)行數(shù)據(jù)庫操作
最后,我們可以編寫 Java 代碼來使用 MyBatis 進(jìn)行數(shù)據(jù)庫操作。以下是一個簡單的示例:
import com.example.entity.User;
import com.example.mapper.UserMapper;
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.InputStream;
public class MyBatisExample {
public static void main(String[] args) throws Exception {
// 加載 MyBatis 配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 打開會話
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
// 添加用戶
User user = new User("John", 25);
userMapper.insertUser(user);
session.commit();
// 查詢用戶
User retrievedUser = userMapper.getUserById(user.getId());
System.out.println(retrievedUser);
// 更新用戶
retrievedUser.setName("Jane");
retrievedUser.setAge(26);
userMapper.updateUser(retrievedUser);
session.commit();
// 刪除用戶
userMapper.deleteUser(retrievedUser.getId());
session.commit();
}
}
}在這個示例中,我們首先加載 MyBatis 配置文件,創(chuàng)建 SqlSessionFactory 對象。然后打開一個會話,通過會話獲取 Mapper 接口的實例。最后,我們可以調(diào)用 Mapper 接口中的方法進(jìn)行數(shù)據(jù)庫操作,并通過 session.commit() 方法提交事務(wù)。
總結(jié)
通過以上步驟,我們完成了 MyBatis 的入門教程。你學(xué)會了如何搭建 MyBatis 開發(fā)環(huán)境、創(chuàng)建實體類、配置文件、映射文件和 Mapper 接口,以及如何使用 MyBatis 進(jìn)行數(shù)據(jù)庫操作。MyBatis 提供了一種簡單而強(qiáng)大的方式來處理數(shù)據(jù)庫操作,希望本教程能幫助你快速上手 MyBatis。在實際開發(fā)中,你還可以進(jìn)一步學(xué)習(xí) MyBatis 的高級特性,如動態(tài) SQL、注解方式等,以提高開發(fā)效率。