MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。下面是配置 MyBatis 环境的详细步骤,并包含一个简单的测试示例。

1. 添加依赖

首先,在 Maven 的 pom.xml 文件中添加 MyBatis 和数据库连接驱动的依赖。以 MySQL 为例:

<dependencies>
    <!-- MyBatis 核心依赖 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <!-- MySQL 驱动依赖 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
    </dependency>
</dependencies>

2. 数据库配置

在实际应用中,通常会创建一个 mybatis-config.xml 文件来配置 MyBatis,包括数据源、事务管理器等信息。

<?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/testdb?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="yourpassword"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/>
    </mappers>
</configuration>

3. 创建实体类和映射文件

假设你有一个 User 表,创建对应的实体类 User.java 和映射文件 UserMapper.xml

// User.java
public class User {
    private int id;
    private String name;
    private String email;
    // getter and setter 方法
}
<!-- UserMapper.xml -->
<?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">
    <select id="selectUser" resultType="User">
        SELECT * FROM User WHERE id = #{id}
    </select>
</mapper>

4. 创建 Mapper 接口

创建一个 Mapper 接口,声明你需要执行的数据库操作。

// UserMapper.java
package com.example.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface UserMapper {
    @Select("SELECT * FROM User WHERE id = #{id}")
    User selectUser(int id);
}

5. 编写测试类

编写一个简单的测试类来测试 MyBatis 的配置和功能。

// MyBatisTest.java
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

为了测试 MyBatis 的配置和功能,你首先需要一个 MyBatis 配置文件(例如 mybatis-config.xml)和一个映射文件(例如 UserMapper.xml)。这里是一个简单的示例:

mybatis-config.xml

<?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/test"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

UserMapper.xml

<?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.model.User">
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>
    <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{id}
    </delete>
    <update id="updateUser" parameterType="com.example.model.User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    <select id="selectUser" parameterType="int" resultType="com.example.model.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

User.java

package com.example.model;
public class User {
    private int id;
    private String name;
    private int age;
    // getter and setter
}

UserMapper.java

package com.example.mapper;
import com.example.model.User;
public interface UserMapper {
    void insertUser(User user);
    void deleteUser(int id);
    void updateUser(User user);
    User selectUser(int id);
}

TestMyBatis.java

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class TestMyBatis {
    
    @Test
    void testInsert() throws Exception {
        SqlSessionFactory sqlSessionFactory = ...; // 获取 SqlSessionFactory
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = new User();
            user.setName("John");
            user.setAge(25);
            mapper.insertUser(user);
            session.commit();
        }
    }

波波鱼
4 声望3 粉丝