Mybatis入门与实战

MyBatis 是一个优秀的持久层框架,它简化了与数据库的交互,避免了大量的 JDBC 代码。以下是一个使用 MyBatis 实现简单数据库操作的案例。

1.环境搭建

JDK 8+

MySQL 5.7.19

Gradle

IDEA

创建数据库和表

create table if not exists demo.user
(
    id   bigint auto_increment primary key,
    name varchar(20) null
);

创建gradle项目,添加依赖(MyBatis核心包、数据库驱动、日志组件)

build.gradle

dependencies {
    implementation 'org.mybatis:mybatis:3.5.19'
    implementation 'org.slf4j:slf4j-log4j12:1.7.5'

    runtimeOnly 'mysql:mysql-connector-java:8.0.22'
}

2.配置文件

配置日志文件:log4j.properties

resources/log4j.properties

log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n

核心配置文件mybatis-config.xml:配置数据源、Mapper扫描路径

resources/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>
    <properties resource="db.properties"/>
    <typeAliases>
        <package name="com.site.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>

resources/db.properties

mysql.driver = com.mysql.cj.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/demo?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
mysql.username = db_user
mysql.password = db_pass

映射文件UserMapper.xml:编写SQL语句并绑定接口方法‌

resources/mapper/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.site.mapper.UserMapper">
    <select id="selectAll" resultType="User">
        select * from user
    </select>

    <insert id="add" parameterType="com.site.pojo.User">
        insert into user (name) values (#{name})
    </insert>
    
</mapper>

3.代码编写

创建实体类(与数据库表字段对应)‌

com/site/pojo/User.java

package com.site.pojo;

public class User {

    Long id;
    String name;
    //getter & setter
}

定义Mapper接口,如UserMapper‌

com/site/mapper/UserMapper.java

package com.site.mapper;

import com.site.pojo.User;
import java.util.List;

public interface UserMapper {
    List<User> selectAll();
    int add(User user);
}

4.单元测试

使用JUnit验证增删改查操作‌

com/site/UserTests.java

package com.site;

import com.site.mapper.UserMapper;
import com.site.pojo.User;
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 org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class UserTests {
    @Test
    public void testSelectAll() throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sessionFactory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        List<User> users = mapper.selectAll();
        users.forEach(user -> {
            System.out.println(user);
        });
        sqlSession.close();

    }

    @Test
    public void testAdd() throws IOException {
        InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sessionFactory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        User user =  new User();
        user.setName("test3");

        int result = mapper.add(user);
        System.out.println(result);

        sqlSession.commit();
        sqlSession.close();
    }
}

MyBatis官网文档中还有更多的内容介绍,可以参考学习。

官网:https://mybatis.org/mybatis-3/zh_CN/getting-started.html

5.小结

本文学习了Mybatis的入门配置及操作,通过该实战能高效完成对数据库的基础操作同时也保持了对SQL的掌控。为后续学习Mybatis的更多特性及与SpringBoot整合打下基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值