• Mybatis引子—Mybatis简单使用


      用一个简单的实例来看Mybatis是如何完成一次sql执行的,如下代码块所示:

    String resource = "mybatis-config.xml";
    // 读取mybatis-config.xml配置定义文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // 使用SqlSessionFactoryBuilder构造SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
        .build(inputStream);
    // 获取SqlSession,用于操作执行SQL语句
    SqlSession sqlSession = sqlSessionFactory.openSession();
    Mapper mapper = sqlSession.getMapper(Mapper.class);
    Integer[] ids = mapper.selectIds();
    

      代码块的核心目的就是使用Mybatis操作数据库执行selectIds方法中的sql语句,其操作步骤如下:

    1. 指定Mybatis主配置文件,用于构造SqlSessionFactory
    2. 使用SqlSessionFactory获取操作执行SQL语句的SqlSession
    3. 使用SqlSession获取想要执行sql语句所在的Mapper
    4. 调用Mapper执行sql

    主配置文件

      在使用Mybatis之前,需要先按照Mybatis官方指定的形式编写一份配置文件,初始定义环境变量、数据库相关参数、mybatis系统参数和自定义TypeHandler等信息。如下mybatis-config.xml配置文件所示,该配置文件使用environments标签指定并设置了development环境下的数据库连接信息,mappers标签用于指定Mapper文件所在的包位置。
      在Mybatis启动解析配置文件的过程中,首先会根据当前的环境变量参数获取到其对应的数据库连接信息,然后依次解析配置文件中各个配置项,最后所有解析校验无误将所有解析得到的数据用于构造SqlSessionFactory,以便后续操作使用。

    
    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://127.0.0.1:3306/test"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                dataSource>
            environment>
        environments>
        <mappers>
            <package name="com.eugene.mybatis.follow"/>
        mappers>
    configuration>
    

    Mapper

      Mybatis的Mapper配置包含两部分,其一是定义Mapper接口,其二是通过XML或者注解的方式配置SQL语句。以上述配置文件mappers标签中的配置为例,所有的Mapper接口都应该放到com.eugene.mybatis.follow包下,如下所示:

    @Mapper
    public interface Mapper {
    
        @SelectProvider(type = SqlGenerator.class, method = "selectIds")
        Integer[] selectIds();
    
        class SqlGenerator{
            public static CharSequence selectIds(){
                return "select id from login_user";
            }
        }
    }
    

      代码块在com.eugene.mybatis.follow包下定义了一个接口,且用注解的方式将其标识为Mybatis Mapper接口,然后使用注解@SelectProvider指定selectIds方法对应的需要执行的SQL语句。

    SqlSession执行SQL语句

      SqlSession是Mybatis提供与数据库交互的接口,且其实例通过工厂模式创建而来。从实例代码块可以清晰的看出SqlSession是由SqlSessionFactory对象创建而来,而SqlSessionFactory又是通过解析配置文件后使用SqlSessionFactoryBuilder类build而来。所以在调用SqlSessionFactory中openSession方法即可获得一个与数据库建立连接的SqlSession实例。

    SqlSession sqlSession = sqlSessionFactory.openSession();
    Mapper mapper = sqlSession.getMapper(Mapper.class);
    

      在通过SqlSessionFactory获得SqlSession之后,就可以操作之前定义的Mapper接口中的SQL语句,从而使得完成SQL语句预定的行为。

  • 相关阅读:
    【QT】不使用QT6PDF模块,200行代码编写一个可编辑PDF的阅读器
    [Win11]解决PS/2标准键盘带感叹号,笔记本键盘无法使用。代码19:由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个
    JVMの内存泄漏&内存溢出案例分析
    LeetCode【32】最长的有效括号
    SpringBoot日志相关进阶配置
    二维费用背包问题的解题套路
    第三章 使用UnoCSS原子化CSS
    【Unity编辑器扩展】| 自定义窗口和面板
    6.26作业
    qml基础语法
  • 原文地址:https://blog.csdn.net/Jas000/article/details/126942806