使用Mybatis持久层框架建立与数据库的连接并执行查询语句的步骤

一、总的来说,使用mybatis执行sql语句可按如下几个步骤执行

1、创建一个普通maven项目,导入依赖:
打开mybatis的官方文档https://mybatis.org/mybatis-3/zh/index.html,下面的步骤都是按照官方文档的指引进行的。首先当然是导入依赖

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

2、创建SqlSessionFactory实例:
通过官方文档的介绍可知道,mybatis中sqlSession是用来代替Statement来执行sql语句的,想要获得sqlSession就必须创建sqlSessionFactory,顾名思义,这个Factory是用来生产SqlSesssion实例的。所以要创建出sqlSessionFactory,根据官方文档的指引,copy代码来创建sqlSessionFactory。

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3、编写创建SqlSessionFactory实例所需要的xml配置文件:
创建sqlSession的代码中

String resource = "org/mybatis/example/mybatis-config.xml";

这个地方要用到配置文件,创建sqlSessionFactory的配置文件里去配置连接数据库的url,用户名,用户密码。还要将mapper在这里注册。所以我们需要写个配置文件,官方给出的配置文件示范:

<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

4、准备工作到这里就结束了,可以利用sqlSessionFactory里创建sqlSession:

SqlSession sqlSession = MybatisUtils.getSqlSession();

5、利用这个SqlSession实例来执行sql语句:
这部分在 二 中详细介绍

二、利用mybatis来执行一条sql语句步骤

1、创建一个maven项目,在pom.xml中导入依赖和避免资源不导出:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--父工程-->
    <groupId>com.wt</groupId>
    <artifactId>MybatisStudy</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatis01</module>
    </modules>

    <!--导入依赖-->
    <dependencies>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!--在build中配置resource,防止资源不导出-->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </build>

    <properties>
        <maven.compiler.source>15</maven.compiler.source>
        <maven.compiler.target>15</maven.compiler.target>
    </properties>

</project>

2、编写一个工具类,这个类的作用是可以调用此类中的静态方法来获得一个SqlSession对象(方法返回SqlSession对象)

package com.wt.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 {
    
    
    private static SqlSessionFactory sqlSessionFactory;

    //copy官网上的代码创建SqlSessionFactory实例
    static {
    
    
        try {
    
    
            String resource = "mybatis01-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch(IOException e){
    
    
            e.printStackTrace();
        }
    }

    //这个静态的方法返回一个SqlSession实例给调用者,也就是这个工具类的工作
    public static SqlSession getSqlSession(){
    
    
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

3、编写创建Factory实例所需要的配置文件mybatis01-config.xml

<?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>
    <environments default="development">
        <!--这个环境用来使用某一用户连接数据库,这里我使用root用户-->
        <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=false&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--写的mapper一定要在这里注册-->
    <mappers>
        <!--注意注册的路径不是用.而是用/-->
        <mapper resource="com/wt/userDao/UserMapper.xml"/>
    </mappers>
</configuration>

---------------以上准备工作做完,下面开始写实现代码---------------

4、根据数据库中的表来创建实体类(pojo,也叫javabean)

package com.wt.pojo;

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

    public User() {
    
    
    }

    public User(int id, String name, String pwd) {
    
    
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public int getId() {
    
    
        return id;
    }

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

    public String getName() {
    
    
        return name;
    }

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

    public String getPwd() {
    
    
        return pwd;
    }

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

5、写mapper层的接口,在mybatis中,这个接口不需要类来实现,而需要绑定一个配置文件中的mapper标签,者这个标签中来写需要执行的sql语句

package com.wt.userDao;

import com.wt.pojo.User;

import java.util.List;

public interface UserDao {
    
    
    List<User> getUserList();
}

6、编写绑定上一步中的接口的配置文件(也是从官方文档上copy的,当然配置要修改)

<?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中写出接口的路径-->
<mapper namespace="com.wt.userDao.UserDao">
    <!--id对应接口中的方法,可以看成实现了这个方法-->
    <select id="getUserList" resultType="com.wt.pojo.User">
        select * from mybatis.user;
    </select>
</mapper>

7、搞定了以上,剩下的就是执行了。编写一个测试类来测试,因为导入了junit包,测试就可以很方便,直接执行这个方法就ok了

package com.wt.userDao;

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

import java.util.List;

public class UserDaoTest {
    
    
    @Test
    public void test(){
    
    
        //执行sql步骤

        //1、利用工具类获取sqlSession,sqlSession来执行sql语句
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //2、sqlSession对象想要拿到sql,从逻辑上来说就从xml中拿,xml与接口绑定,则要从接口中拿
        //下面就是利用sqlSession的getMapper方法拿到mapper,有了这个mapper,就能执行接口中的方法,执行sql语句了
        UserDao mapper = sqlSession.getMapper(UserDao.class);

        //3、调用方法执行sql语句(一个方法与一个mapper中的某标签绑定,就能执行标签中的sql语句了)
        List<User> userList = mapper.getUserList();

        //这里循环输出结果
        for(User user:userList){
    
    
            System.out.println(user.getName());
        }

        //4、关闭sqlSession
        sqlSession.close();

    }
}

执行结果:
在这里插入图片描述
上面7步就可以实现使用mybatis执行sql语句了

猜你喜欢

转载自blog.csdn.net/kitahiragawa/article/details/112982219