• Mybatis快速入门


    1.Mybatis简介

    在这里插入图片描述

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。


    2.第一个Mybatis项目

    Maven导包

    导入mysql连接包和mybatis包:

    
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
        <version>8.0.31version>
    dependency>
    
    <dependency>
        <groupId>org.mybatisgroupId>
        <artifactId>mybatisartifactId>
        <version>3.5.9version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    新建Mybatis配置文件

    XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)

    resources目录下新建mybatis-config.xml文件,初始配置内容如下:

    
    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="${driver}"/>
                    <property name="url" value="${url}"/>
                    <property name="username" value="${username}"/>
                    <property name="password" value="${password}"/>
                dataSource>
            environment>
        environments>
        <mappers>
            <mapper resource="top/imustctf/dao/UserMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    需要用户自己修改dataSource中的内容,例如:

    注意:对于每一个Mapper.xml,都要Mybatis配置文件中注册对应的mapper - resource🦭

    
    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://localhost:3306/mybatis?useSSL=false&serverTimezone=GMT%2B8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                dataSource>
            environment>
        environments>
        <mappers>
            <mapper resource="top/imustctf/dao/UserMapper.xml"/>
        mappers>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    编写Mybatis工具类

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

    说白了,就是构建一个生产SqlSession的工厂类,SqlSession用于执行具体的SQL业务:

    private static SqlSessionFactory sqlSessionFactory;
    
    // 初始化SqlSession工厂
    static {
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句:

    /**
     * 获取SqlSession实例,用于操作数据库
     * @return SqlSession实例
     */
    public static SqlSession getSqlSession() {
        return sqlSessionFactory.openSession();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    此时,基本的Mybatis架构已经完成!


    3.探究已映射的 SQL 语句

    现在你可能很想知道 SqlSession 和 Mapper 到底具体执行了些什么操作,但 SQL 语句映射是个相当广泛的话题

    首先像以往的Javaweb项目一样,我们新建一个UserDao的接口:

    public interface UserMapper {
        List<User> getUserList();
    }
    
    • 1
    • 2
    • 3

    一个语句既可以通过 XML 定义,也可以通过注解定义。我们先看看 XML 定义语句的方式:

    注意:这里的mapper - namespace要写对应的UserDao接口类,select - id要写接口待实现的方法,resultType要写返回的结果类型🐳

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="top.imustctf.dao.UserMapper">
        <select id="getUserList" resultType="top.imustctf.pojo.User">
            select * from mybatis.user
        select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    万事俱备,只欠东风,现在让我们来测试一下吧:

    public class UserMapperTest{
        @Test
        public void test() {
            SqlSession sqlSession = MybatisUtils.getSqlSession();
            try {
                UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
                List<User> userList = userMapper.getUserList();
                for (User user : userList) {
                    System.out.println(user);
                }
            } catch (Exception e) {
                throw new RuntimeException(e);
            } finally {
                sqlSession.close();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    《Thinking In Java》作者:不要使用并发!
    【Unity3D】Unity与Android交互
    如何创建自己的Spring Boot Starter并为其编写单元测试
    Spring Cloud Alibaba+saas企业架构技术选型+架构全景业务图 + 架构典型部署方案
    日本亚马逊日本电气产品PSE认证METI备案办理要求
    Go标准库Context
    Java.Integer.bitCount(int)源码解析
    企业数仓DQC数据质量管理实践篇
    leetcode每日一题复盘(11.6~11.12)
    【Python】Matplotlib可视化50例
  • 原文地址:https://blog.csdn.net/Gherbirthday0916/article/details/127602197