《Mybatis入门学习(一)》

一、什么是mybatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。

2013年11月迁移到Github。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

二、框架执行流程

在这里插入图片描述
框架介绍

1、 mybatis配置

SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。

mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

2、 通过mybatis环境等配置信息构造SqlSessionFactory会话工厂

3、 由会话工厂创建sqlSession会话,操作数据库需要通过sqlSession进行。

4、 mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5、 Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

6、 Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7、 Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

三、mybatis环境搭建

1、创建一个空的maven项目,导入依赖
在这里插入图片描述
2、编写实体类
在这里插入图片描述
*这里用的是lombok插件,可在类前面加@Data自动生成ToString Getter Setter以及构造方法;

3、在resources文件夹中,创建Mybatis的主配置文件。它是mybatis核
心配置文件,配置文件内容为数据源、事务管理。在这里插入图片描述

4、导入log4j配置文件
在这里插入图片描述
5、编写映射文件
在这里插入图片描述
6、加载映射文件:将映射文件地址写入XML主配置文件的映射器当中
在这里插入图片描述
到此配置mybatis完成

四、编写测试类

  1. 加载核心配置文件SqlMapConfig.xml
  2. 创建SqlSessionFactoryBuilder对象
  3. 创建SqlSessionFactory对象(2,3可以写一起)
  4. 创建SqlSession对象
  5. 执行SqlSession对象执行查询,获取结果User
  6. 打印结果
  7. 释放资源
public class UserTest {

    public void findUser(){

        //读取mybatis主配置文件
        InputStream asStream = null;
        try {
            asStream = Resources.getResourceAsStream("mybatis.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 创建一个sqlSession工厂构造器,调用build方法,传入字节流,建立工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(asStream);
        // 利用sqlSessionFactory工厂的openSession方法建立数据库会话
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 利用sqlSession会话执行sql语句

        List<User> users = sqlSession.selectList("com.rimi.project.mapper.UserMapper.findAll");
        System.out.println(users);
    	}
    }

2、test文件夹下创建测试类调用findUser方法

package com.rimi.project.mybatis;

import org.junit.Test;

import static org.junit.Assert.*;

public class UserTestTest {

    @Test
    public void findUser() {
        new UserTest().findUser();
    }
}

运行打印结果,完成!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值