每天五分钟之IT技能包Mybatis实验室

MyBatis入门实验(一)之入门

2018-07-11  本文已影响0人  学好该死的程序

实验内容

使用Mybatis执行SQL语句从数据库中取出数据,并封装成Java对象返回

操作步骤

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

一、安装

添加Maven依赖(本文使用版本为3.4.6)

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>x.x.x</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.42</version>
</dependency>

二、创建数据库及表结构

CREATE TABLE `user` (
  `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(32) NOT NULL COMMENT '用户名',
  `password` varchar(64) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'admin', '123');

三、创建 Mybatis 配置文件

src/main/resources 目录下创建 mybatis-config.xml 文件,内容如下

<configuration>
    <properties resource="jdbc.properties"></properties>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mybatis/User.xml"></mapper>
    </mappers>
</configuration>

src/main/resources 目录下创建 jdbc.properties 文件,内容如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/tutorial_mybatis?characterEncoding=utf-8&useSSL=true
jdbc.username=root
jdbc.password=

四、创建实体类和映射文件

创建包 tutorial.mybatis.model,并在该包下创建 User 类,内容如下

public class User {

    private Long id;

    private String username;

    private String password;
    
    // 省略 get / set 方法
}

src/main/resources 目录下创建目录 mybatis,并在该目录下创建 User.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="userMapper">

    <select id="getUserByID" parameterType="int" resultType="tutorial.mybatis.model.User">
        select * from `user` where id = #{id}
    </select>

</mapper>

注意:User.xml的路径为 mybatis/User.xml,这个路径与第三步中定义的 mapperresource 是对应的,mybatis 会在项目启动过程中去加载 mappers 中定义的映射文件

五、构建

准备工作就绪,开始最终章,创建启动类 MybatisConfig,内容如下:

public class MybatisConfig {

    private static SqlSessionFactory sqlSessionFactory;
    private static Reader reader;

    static {
        try {
            reader = Resources.getResourceAsReader("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws IOException {
        SqlSession session = sqlSessionFactory.openSession();
        try {
            User user = session.selectOne("userMapper.getUserByID", 1);
            if (user != null) {
                String userInfo = "名字:" + user.getUsername()+", 密码:" + user.getPassword();
                System.out.println(userInfo);
            }
        } finally {
            session.close();
        }
    }
}

流程梳理

1、main函数启动,执行 static 代码块,使用 mybatis-config.xml 文件构建sqlSessionFactory,这个过程中会加载 mappers 文件
2、创建 sqlSession 连接,执行 SQL 语句 userMapper.getUserByID,userMapper.getUserByID 会被分解为 namespace + sqlId,所以 mybatis 会去寻找 namespace 为 userMapper,sqlId为 getUserByID 的SQL语句,这个语句定义在 User.xml 文件中。
所以 mybatis 最终会执行

select * from `user` where id = #{id}
上一篇下一篇

猜你喜欢

热点阅读