我的第一个mybatis程序

写在前面:

  最近开始了框架的学习,打算先从mybatis入手,下面是我的第一个mybatis程序。

编译环境:

  idea+jdk1.8+mysql+maven-3.6.3

首先需要在pom.xml中添加依赖代码


  org.mybatis
  mybatis
  x.x.x

//这里我用的是3.5.2版本

创建mybatis的配置文件,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。

mybatis-config.xml:

"1.0" encoding="UTF-8" ?>
DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

  default="development">
    "development">
      "JDBC"/>
      "POOLED">
        "driver" value="${driver}"/>    //jdbc驱动,我的是com.mysql.jdbc.Driver
        "url" value="${url}"/>      
        "username" value="${username}"/>
        "password" value="${password}"/>
      
    
  
  
  //每一个mapper都需要注册,这里和后面有关 "org/mybatis/example/BlogMapper.xml"/>

 

我们以前都是通过jdbc来操作数据库,频繁的连接关闭不仅会消耗巨大的资源,并且如果要修改sql的话不利于整体的维护。

而mybatis的核心概念有Configuration 、 SqlSessionFactory 、 Session 、 Executor 、 MappedStatement 、StatementHandler、ResultSetHandler。我是首先了解了 SqlSessionFactory。

我们首先看官方文档是怎样定义的:

我的第一个mybatis程序_第1张图片

 

 

我们创建一个mybatisutil用来获取sqlsession对象

package utils;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

//sqlSessionFactory对象
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;

    static {

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = null;
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return  sqlSession;
    }



}

 

 同样我们再联系一下传统MVC设计模式的写法,我们会写一个DAO接口,然后创建一个实现类去继承它,如下:

 

 

 那么我们通过mybatis,不用在创建实现类了,而是在xml语句中定义映射,如下:

"1.0" encoding="UTF-8" ?>
DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

namespace="dao.UserDao">
    <select id="getCloud" resultType="bean.Cloud">
        select * from caijing
    select>

在这里,namespace用来绑定一个Dao/Mapper接口,也就是说,这个xml就相当于我们之前创建的实现类,它们的作用是一样的,省去了jdbc一系列的操作,更加简单了。

现在我们回过头来再看一开始创建的mybatis-config.xml,大家有没有注意到:

 

 

 我在这里注释道每一个mapper都需要注册,这里它的resource需要改为"dao.UserMapper.xml",一定要注意是每一个!!!我只创建了一个,所有这里就注册一个。

写到这,准备工作也就差不多了,下面我们开始测试:

package dao;

import bean.Cloud;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import utils.MybatisUtils;

import java.util.List;

public class UserDaoTest {
    @Test
    public void test(){
        //1.获取sqlsession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //2.1执行sql
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List list = mapper.getCloud();
        for (Cloud cloud : list) {
            System.out.println(cloud);
        }
        //关闭sqlsession
        sqlSession.close();
    }
}

运行结果:

我的第一个mybatis程序_第2张图片

 

你可能感兴趣的:(我的第一个mybatis程序)