mybatis源码分析00:获取源码及demo准备

200 阅读2分钟

注:本系列源码分析基于mybatis 3.5.6,源码的gitee仓库仓库地址:funcy/mybatis.

1. 获取源码

本文是mybatis源码分析的第一篇,源码分析的第一步就是要获取源码,mybatis 的github仓库为 github/mybatis,对于 git 的 forkcheckout 操作,非本文内容,就不多说了,不过有两点需要说明下:

  1. 由于你懂的原因,github 网络比较慢,代码下载、提交有诸多不便,可以将其导入到gitee仓库,可大大提高提交速度
  2. 由于 master 分支上的代码还在开发中,因此强烈建议基于已发布的版本创建新分支,在新分支上进行分支,已发布版本的代码位于tag上

本系列源码分析基于mybatis 3.5.6,源码的gitee仓库仓库地址:funcy/mybatis,该仓库满足了以上两点。

2. demo 准备

checkout 完源码后,接下来就是创建源码分析的 demo 了,示例 demo 的代码结构如下:

  1. 准备config.properties文件

该文件存放一些配置内容,主要是数据库相关的配置:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123
  1. 准备mybatis配置文件:mybatis-config.xml

mybatis-config.xml 存放了 mybatis 的各种配置,关于这些配置的内容,可以参考mybatis 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="org/apache/ibatis/demo/config.properties">
  </properties>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC">
        <property name="..." value="..."/>
      </transactionManager>
      <!-- 数据源配置 -->
      <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>
  <!-- mapper 文件配置 -->
  <mappers>
    <mapper resource="mapper/demo/UserMapper.xml"/>
  </mappers>
</configuration>
  1. 准备 User.java

这是一个简单的 java bean,内容如下:

public class User {

  /**
   * 用户id
   */
  private Long id;

  /**
   * 登录名
   */
  private String loginName;

  /**
   * 用户昵称
   */
  private String nick;

  // 省略set与get文件

}
  1. 准备 UserMapper.java

这个是 mybatis 接口,用来定义查询操作:

public interface UserMapper {
  /**
   * 查询
   * @return
   */
  List<User> selectList(@Param("id") Long id, @Param("limit") Integer limit);
}
  1. 准备UserMapper.xml文件

该文件路径为 src/test/resources/mapper/demo/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="org.apache.ibatis.demo.mapper.UserMapper">
  <select id="selectList" resultType="org.apache.ibatis.demo.User">
    select id, login_name as loginName, nick from user
    <trim prefix="where" prefixOverrides="AND |OR">
      <if test="id != null">
        and id = #{id}
      </if>
    </trim>
    <if test="limit != null">
      limit #{limit}
    </if>
  </select>
</mapper>
  1. 主类

主类代码如下:

public class Test01 {
  public static void main(String[] args) throws Exception {
    // 配置文件路径
    String resource = "org/apache/ibatis/demo/mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(inputStream);
    try (SqlSession sqlSession = factory.openSession()) {
      // 获取 mapper,进行查询操作
      UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
      List<User> users = userMapper.selectList(3L, 10);
      System.out.println(users);
    }
  }
}

运行,结果如下:

[User{id=3, loginName='test', nick='test'}]

运行正常,也能正常获取到结果。

说实话,对于一个常期使用spring与mybatis整合的人来说,Test01main(...)的代码还是很陌生的,不过这些都是 mybatis 的入门代码(可参考mybatis 入门),本文研究的也是原汁原味的mybatis框架,与spring整合的源码后面再分析。

本文就先到这里了,本文主要是获取mybaits源码及进行demo准备,后续的源码分析就基于这个demo了。


本文原文链接:my.oschina.net/funcy/blog/… ,限于作者个人水平,文中难免有错误之处,欢迎指正!原创不易,商业转载请联系作者获得授权,非商业转载请注明出处。