1、什么是Mybatis

  • MyBatis 是一款优秀的持久层框架
  • 它支持定制化 SQL、存储过程以及高级映射。
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
  • MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
  • 2013年11月迁移到Github。

如何获得Mybatis?


2、搭建环境

思路:搭建环境—>导入Mybatis—>编写代码—>测试!

1.搭建数据库

CREATE DATABASE `mybatis`;

USE `mybatis`;

CREATE TABLE `user`(
  `id` INT(20) NOT NULL PRIMARY KEY,
  `name` VARCHAR(30) DEFAULT NULL,
  `pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `user`(`id`,`name`,`pwd`) VALUES 
(1,'yuanzi','123456'),
(2,'yuanzi2','123456'),
(3,'张三','123890'),
(4,'李四','123890'),
(5,'王五','123890')

2.新建项目

新建一个普通的maven项目

  1. 删除src目录
  2. 项目pom文件内 , 导入maven依赖
  3. 导出配置文件的设置

    
     <!--导入依赖-->
     <dependencies>
         <!--mysql驱动-->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>5.1.47</version>
         </dependency>
         <!--mybatis-->
         <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
         <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis</artifactId>
             <version>3.5.2</version>
         </dependency>
         <!--junit-->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.12</version>
         </dependency>
     </dependencies>
    
     <!--编译时导出配置文件-->
     <build>
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
                 <includes>
                     <include>**/*.properties</include>
                     <include>**/*.xml</include>
                 </includes>
                 <filtering>true</filtering>
             </resource>
             <resource>
                 <directory>src/main/java</directory>
                 <includes>
                     <include>**/*.properties</include>
                     <include>**/*.xml</include>
                 </includes>
                 <filtering>true</filtering>
             </resource>
         </resources>
     </build>
    

3.创建一个模块

image.png

  • 编写mybatis的核心配置文件

注意需要注册mappers

<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一个mapper.xml都需要在mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/yuanzi/dao/UserMapper.xml"/>
    </mappers>

</configuration>

4,编写mybatis工具类

  • 获取sqlSession ```java //sqlSessionFactory —> sqlSession public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static{

      try {
          //使用Mybatis第一步:获取sqlSessionFactory对象
          String resource = "mybatis-config.xml";
          InputStream inputStream = Resources.getResourceAsStream(resource);
          sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      } catch (IOException e) {
          e.printStackTrace();
      }
    

    }

    //既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。 // SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。 public static SqlSession getSqlSession(){

      return sqlSessionFactory.openSession();
    

    }

}


<a name="PkZ6E"></a>
#### 5.编写代码

- 实体类
```java
package com.yuanzi.pojo;

public class User {
    private int id;
    private String name;
    private String pwd;

    public User(){

    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }


}
  • Dao接口

    public interface UserDao {
      List<User> getUserList();
    }
    
  • 接口实现类由原来的UserDaoImpl转变为一个 Mapper配置文件. ```xml <?xml version=”1.0” encoding=”UTF8” ?> <!DOCTYPE mapper

      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    


<a name="MjIvx"></a>
#### 6,测试
核心配置文件中注册 mappers

- junit测试
```java
package com.yuanzi.dao;

import java.util.List;

import com.yuanzi.pojo.User;
import com.yuanzi.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

public class UserDaoTest {

    @Test
    public void test1(){
        //1.获取sqlSession
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        try{
            //2.执行SQL
            UserDao mapper = sqlSession.getMapper(UserDao.class);
            List<User> userList = mapper.getUserList();

            for (User user:userList) {
                System.out.println(user);
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            sqlSession.close();
        }


    }

}

image.png