71muke?v=1
在线看书
立即购买

第一章 MyBatis介绍

收起
2023-08-29更新,每天更一篇

第二章 查询的实现

收起
2024-01-17更新,每天更一篇

第三章 DML操作的实现

收起
2024-01-17更新,每天更一篇

第四章 MyBatis动态SQL

收起
2023-08-29更新,每天更一篇

第五章 MyBatis代码生成器和缓存配置

收起
2023-08-29更新,每天更一篇

第六章 MyBatis插件开发

收起
2023-08-29更新,每天更一篇
71muke 71muke

SqlSession的使用

一、SqlSession是什么?

SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。它是应用程序与持久层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。每个线程都应该有它自己的SqlSession实例。

SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Servlet当中的HttpSession对象中。使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭它。


二、SqlSession的使用

1、在pom.xml中配置junit测试模块

image.png

添加代码如下:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

2、然后点击右下角的自动加载驱动,导入junit单元测试包

image.png

3、在下面的文件夹下创建对应的包和类:

image.png

4、然后编写下面的代码,下面的代码主要是使用SqlSession实现数据库的连接和关闭

package com.test.mybatis;

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 org.junit.Test;

import javax.annotation.Resource;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;

public class SqlSessionTest {
    @Test
    public void test() throws IOException {
        // 加载MyBatis的配置文件mybatis-config.xml
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        // 使用SqlSessionFactoryBuilder构建SqlSessionFactory对象
        SqlSessionFactory fa = new SqlSessionFactoryBuilder().build(reader);
        // 通过SqlSessionFactory创建SqlSession对象
        SqlSession session = null;
        try{
            session = fa.openSession();
            // 从SqlSession对象中获取数据库连接
            Connection conn = session.getConnection();
            System.out.println(conn);
        }catch (Exception e){
            System.out.println(e.getMessage());
        }finally { //如果出现异常,关闭连接
            /*
            * 关闭数据库时须知:
            * 如果type="POOLED”,那么代表使用连接池,close则是将连接回收到连接池中
            *如果type=“UNPOOLED”,那么代表直连,close则会调用Connection.close() 方法关闭连接
            * */
            if(session != null){
                session.close(); //关闭连接
            }
        }
    }
}

5、编写完后,对方法右键可以运行查看是否有问题

image.png

运行完成后的结果:

image.png

看到上面的结果就代表连接成功

留言

发布留言

需要购买本课才能留言哦~

{{ item.createtime | dateStr }}
×