自学内容网 自学内容网

MysBatis入门教程

一、引言

MysBatis是一款优秀的持久层框架,它消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。本文将带您详细了解MysBatis的结构、优势、应用场景以及编写步骤,让0基础的你轻松上手!

二、MysBatis结构

  1. API接口层:提供给外部调用的接口,如SqlSession接口。

  2. 数据处理层:负责SQL语句的执行以及结果集的处理,如Executor接口。

  3. 框架支撑层:提供基础支撑,如事务管理、连接池管理等。

  4. 引导层:负责配置文件的解析、SQL语句的加载和映射等。

三、MysBatis优势

  1. 简化JDBC操作:自动处理SQL语句的参数设置和结果集的获取,降低开发难度。

  2. 高度灵活:支持自定义SQL、存储过程和高级映射,满足各种复杂场景。

  3. 易于上手:相对于Hibernate等ORM框架,MysBatis更易于理解和掌握。

  4. 轻量级:无需引入过多的依赖,部署简单。

  5. 高性能:支持SQL语句的预编译和缓存,提高执行效率。

四、MysBatis应用场景

  1. 适用于复杂SQL查询的场景。

  2. 需要灵活操作数据库的场景。

  3. 对性能要求较高的场景。

  4. 适合中小型项目,特别是互联网项目。

五、MysBatis编写步骤 

  1. 添加依赖

在项目的pom.xml文件中添加MysBatis依赖:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.6</version>
</dependency>
  1. 配置MysBatis

在项目的src/main/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>
    <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?useUnicode=true&characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/example/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  1. 编写实体类

根据数据库表结构,创建对应的实体类,如User.java:

public class User {
    private Integer id;
    private String name;
    private Integer age;
    
    // 省略getter和setter方法
}
  1. 编写Mapper接口

创建Mapper接口,定义需要执行的SQL操作,如UserMapper.java:

public interface UserMapper {
    int insert(User user);
    int update(User user);
    int delete(Integer id);
    User selectById(Integer id);
    List<User> selectAll();
}
  1. 编写Mapper映射文件

在src/main/resources目录下创建com/example/mapper/UserMapper.xml文件,编写SQL语句:

<?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="insert" parameterType="User">
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>
    <update id="update" parameterType="User">
        UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}
    </update>
    <delete id="delete" parameterType="Integer">
        DELETE FROM user WHERE id=#{id}
    </delete>
    <select id="selectById" parameterType="Integer" resultType="User">
        SELECT * FROM user WHERE id=#{id}
    </select>
    <select id="selectAll" resultType="User">
        SELECT * FROM user
    </select>
</mapper>
  1. 编写测试类

创建测试类,执行Mapper接口中的方法,如UserMapperTest.java:

public class UserMapperTest
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.BeforeClass;
import org.junit.Test;

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

public class UserMapperTest {

    private static SqlSessionFactory sqlSessionFactory;

    @BeforeClass
    public static void init() {
        try {
            // 使用MyBatis提供的Resources工具类加载mybatis-config.xml文件
            Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
            // 创建SqlSessionFactory对象
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testInsert() {
        // 获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            // 获取Mapper接口的代理对象
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            // 创建User对象
            User user = new User();
            user.setName("张三");
            user.setAge(28);
            // 执行插入操作
            int result = userMapper.insert(user);
            // 提交事务
            sqlSession.commit();
            System.out.println("插入结果:" + result);
        } finally {
            // 关闭SqlSession
            sqlSession.close();
        }
    }

    // 这里可以继续添加其他测试方法,比如update、delete、selectById、selectAll等
}

六、总结

通过以上步骤,我们完成了MysBatis的基本使用。从添加依赖、配置MysBatis、编写实体类、Mapper接口和映射文件,到最后的测试类编写,每一步都是MysBatis操作数据库的关键。希望这篇博客能帮助您快速上手MysBatis,并在实际项目中灵活运用。

请注意,以上代码仅为示例,实际项目中的数据库连接信息、实体类属性、Mapper接口方法和SQL语句需要根据具体业务进行调整。此外,为了确保代码的整洁性和可维护性,建议在实际项目中使用日志框架记录操作日志,并处理可能出现的异常。

 


原文地址:https://blog.csdn.net/2301_81724645/article/details/144350856

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!