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语句预定的行为。

你可能感兴趣的:(mybatis,mybatis,java,后端)