一、MyBatis的主要功能

1. SQL Mapper : 负责SQL映射,将数据库的一张表的一行数据看做一个对象。

2. Data Access Objects : DAOs 数据访问,主要是DML、DOC语句。

二、使用MyBatis的基本步骤

1. 使用IDEA创建项目

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_ssm框架调用mysql数据库

2. 加入Maven依赖:在POM.XML文件中加入MySql、MyBatis坐标。

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_mybatis_02

<dependencies>
    <!--单元测试-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- mybatis坐标-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version><!--写自己需要的版本号-->
    </dependency>
    <!-- mysql驱动坐标-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.29</version><!--写自己需要的版本号-->
    </dependency>
  </dependencies>

3. 在数据库中建立一个t_student表:表结构如下。

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_SQL_03

4. 创建实体类和DAO接口方法:前者将表中一行数据看做一个对象,后者定义操作数据库的方法。

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_ssm框架调用mysql数据库_04

注意对象的属性是表中的列名、一定要有set和get方法、重写tostring方法,代码如下:

package com.aojiaodeRR.domain;

public class student {
    private Integer id;
    private String name;
    private Integer age;

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

② 写dao接口,注意dao是接口,只写对数据库的操作方法,代码如下。

public interface StudentDao {
    public List<student> s_student();//定义查询数据方法

5. 创建mapper文件(SQL映射文件):写SQL语句,dao接口的SQL语句,一个表对应一个mapper文件。

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_映射文件_05

<?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="com.aojiaodeRR.dao.StudentDao">
    <select id="s_student" resultType="com.aojiaodeRR.domain.student">
        select id , name ,age from t_student order by id
    </select>
</mapper>
<!-- sql映射文件,写sql语句
指定约束文件:<!DOCTYPE mapper
               PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
              "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
               mybatis-3-mapper.dtd是约束文件的名称.dtd格式,限制和检查文件中的语法是否合规
  mapper:当前文件的根标签
  namespace:命名空间,唯一值,使用dao接口的全路径名称,可自定义但不推荐
  id:执行sql语句的唯一标识,mybatis使用此id值来找到要执行的SQL语句,使用接口中的方法名称
  resultType:表示sql语句返回结果对象的类型是什么,值写类型的全路径名称
-->

6. 创建主配置文件:一个项目只有一个主配置文件,在resources目录下,负责提供数据库连接信息和SQL映射文件位置。

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_mybatis_06

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--环境配置:数据库连接信息 default:必须与你的environment id一致,写谁连谁-->
    <environments default="development">
        <!-- environment:一个数据库信息配置
    id:唯一值,自定义表示环境名称-->
        <environment id="development">
            <!--transactionManager:mybatis的事务类型type:使用JDBC中的connection对象的commit和rollback处理事务-->
            <transactionManager type="JDBC"/>
            <!--dataSource:数据源链接数据库 type:数据库类型 POOLED:连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="地址"/>
                <property name="username" value="账户"/>
                <property name="password" value="密码"/>
            </dataSource>
        </environment>
    </environments>
    <!--sql mapper(sql映射文件)的位置 一个mapper标签指定一个文件位置
从类路径开始 target/class(类路径)-->
    <mappers>
        <mapper resource="com/aojiaodeRR/dao/StudentDao.xml"/>
    </mappers>
</configuration>
        <!--mybatis主配置文件,主要定义了数据库配置信息,sql映射文件位置
     约束文件
      <!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
        mybatis-3-config.dtd"约束文件名称
-->

7. 写测试类执行SQL语句。

① 写一个自定义工具类

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_sql_07

包名、类名随意,可自定义

package com.aojiaodeRR.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;

public class MyBatisUtils {
    //    读取配置文件和获取SqlSessionFactory对象
    private static SqlSessionFactory factory = null;

    static {
        String Config = "mybatis.xml";
        try {
            InputStream in = Resources.getResourceAsStream(Config);
            factory = new SqlSessionFactoryBuilder().build(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //    获取SqlSession方法
    public static SqlSession getSqlSession() {
        SqlSession sqlSession = null;
        if (factory != null) {
            sqlSession = factory.openSession();
        }
        return sqlSession;
    }
}

② 写测试类,运行。

public class TestDao {
//    动态代理使用getMapper方法
    @Test
    public void tests_student(){
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao dao = sqlSession.getMapper(StudentDao.class);
        List<student> students = dao.s_student();
        for (student s : students){
            System.out.println(s);
        }
        sqlSession.close();
    }

③ 验证结果

ssm框架调用mysql数据库 ssm框架实现连接数据库mysql_ssm框架调用mysql数据库_08

=========================================================================

时间有限,剩下内容我将在MyBatis(2)中继续分享。