快速开始

安装

pom.xml中添加相关依赖。

<!-- Mysql 依赖 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>
<!-- myBatis 依赖 -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.6</version>
</dependency>
<!-- lo4j2 日志 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.19.0</version>
</dependency>
<!-- junit 测试 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.1</version>
    <scope>test</scope>
</dependency>

创建核心配置

resource下创建mybatis.xml配置,该配置是mybatis的核心配置。

resources/mybatis.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>
    <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://coderlzw.cn:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 注册映射文件 -->
        <mapper resource="userMapper.xml"/>
    </mappers>
</configuration>

添加映射文件

映射文件一般称之为mapper,主要是在里面编写 SQL 语句。

resources/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="test">
    <!--parameterType可省略 -->
    <select id="selectUser" parameterType="org.example.pojo.User" resultType="org.example.pojo.User">
        select * from db_user where id = #{id}
    </select>
    <select id="selectAllUsers" resultType="org.example.pojo.User">
        select * from db_user
    </select>
    <insert id="insertUser">
        INSERT INTO db_user (username, email, age, gender, registration_date)
        VALUES (#{username}, #{email}, #{age}, #{gender}, #{registrationDate})
    </insert>
    <delete id="deleteUser">
        DELETE FROM db_user WHERE id = #{id}
    </delete>
    <update id="updateUser">
        UPDATE db_user set username=#{username},age=#{age} where id=#{id}
    </update>
</mapper>
  • id:该SQL语句的唯一表示,可以用来代替该SQL语句,在Java代码中要使用该标识。

  • parameterType:传入参数的类型,MyBatis会推断出传入参数的类型,因此可以不做配置。

  • #{}:里面填写javabean中的属性,其底层通过反射机制,调用bean相关属性的get方法来获取值。

  • resultType:表示该SQL语句返回的每一条的数据类型。

创建实体类

pojo/User
package org.example.pojo;

import java.sql.Date;

public class User {
    private int id;
    private String username;
    private String email;
    private int age;
    private String gender;
    private Date registrationDate;
    
    // 省略其余部分
}

创建Dao接口和实现类

  • SqlSessionFactoryBuilder:作用是创建SqlSessionFactory,在创建SqlSessionFactory之后就不再需要SqlSessionFactoryBuilder了。

  • SqlSessionFactory:在一个应用中只创建一个SqlSessionFactory即可,最好保证其是单例的,通过SqlSessionFactory我们可以创建SqlSession。

  • SqlSessionSqlSession是线程不安全的,在后面跟spring进行集成之后,可以创建出线程安全的SqlSesion对象。

package org.example.dao;

import org.example.pojo.User;

import java.util.List;

public interface UserDao {
    User selectUser(int id);

    Integer insertUser(User user);

    List<User> selectAllUsers();
}

UserDao的实现类中,我们手动提交事务。如果想要改成自动的话,可以在openSession方法里面传入true。默认为false,即没有任何参数。

测试

import org.example.dao.UserDao;
import org.example.dao.impl.UserDaoImpl;
import org.example.pojo.User;
import org.junit.Test;

import java..Date;
import java.util.List;

public class UserTest {
    @Test
    public void testSelectUser() {
         UserDao userDao = new UserDaoImpl();
         User user = userDao.selectUser(1);
         System.out.println(user);
    }

    @Test
    public void testInsertUser() {
        Date date = new Date();
        User user = new User("John 123111", "123@qq.com", 20, "Male", date);
        UserDao userDao = new UserDaoImpl();
        Integer i = userDao.insertUser(user);
        if (i > 0) {
            System.out.println("Insert user successfully!");
        } else {
            System.out.println("Insert user failed!");
        }
    }

    @Test
    public void testSelectAllUsers() {
        UserDao userDao = new UserDaoImpl();
        List<User> users = userDao.selectAllUsers();
        for (User user : users) {
            System.out.println(user);
        }
    }
}

最后更新于

这有帮助吗?