步骤

  1. 设置打包方式:jar

  2. 引入依赖,使用maven引入MyBatis框架(其实就是jar包)和数据库驱动jar包(jdbc)

  3. 创建核心配置文件,复制配置信息到该文件,并且修改连接数据库的信息

  4. 创建XxxMapper.xml文件。并在其中编写SQL语句。每条SQL语句都有一个唯一标识符id=”…”

  5. 在mybatis-config.xml的mappers中指定XxxMappser.xml的路径。

    1
    2
    3
    <mapper resource="carMapper.xml"/>//从类路径中加载资源
    <!--该mapper还有另外一个属性:url。该属性值有固定写法:url="file:/// + 绝对路径"
    但不建议使用该方法,因为移植性太差。当从windows系统移植到mac或linux系统时,后两者的系统中没有磁盘的概念,那么这种写法就会报错-->

    该resource属性会自动从项目根路径下开始查找资源。因为我们将carMapper.xml文件放在resources文件中,等同于放到了根路径下

  6. 编写MyBatis程序。MyBatis中有一个负责执行SQL语句的对象:SqlSession,该对象表示的是java程序和数据库之间的一次会话。获得SqlSession的过程:

    SqlSessionFactoryBuilder –> SqlSessionFactory –> SqlSession

    一般一个数据库对应一个SqlSessionFactory

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    package com.deng.mybatis.test;

    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.InputStream;

    public class MyBatisTest {
    public static void main(String[] args) throws Exception{
    //get the SqlSessionFactorBuilder
    SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    //get the SqlSessionFactor
    //该方法默认从根路径下查找资源
    InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
    SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    //get the SqlSession
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //execute the sql
    int count = sqlSession.insert("insertCar");
    //commit
    //mybatis中默认情况下是开启事务的,在执行DML语句时需要s
    sqlSession.commit();
    }
    }

    1. MyBatis中有两种重要的xml文件

      1. mybatis-config.xml。不一定必须是这个名字该配置文件用于配置连接数据库的信息,只有一个
      2. XxxMapper.xml。该配置文件用于编写SQL语句。一般是一个表对应一个Mapper.xml文件,所以有多个
    2. 小技巧:

      1. 在一些有Resource的方法且需要传递路径时,一般是从根路径下开始查找资源

      2. 另一种获得输入流的方法:

        1. InputStream is = ClassLoader.getSystemLoader().getResourceAsStream("path");
          //这也是Resources.getRescourceAsStream("path")的底层实现源码