当前位置:   article > 正文

Mybatis-基础应用第一篇之SqlSession_mybatis中的sqlsession

mybatis中的sqlsession

Mybatis 中的SqlSession的创建和使用

1. 如何创建一个SqlSession对象

在Mybatis中SqlSesion提供了在数据库执行SQL命令所需的所有方法。可以通过SqlSessionFactory对象直接获取一个SqlSession.

1)、 先在mybatis-config.xml文件中配置DataSource

<?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>
    <properties>
        <property name="datasource.driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="datasource.url" value="jdbc:mysql://localhost:3306/spring"/>
        <property name="datasource.username" value="root"/>
        <property name="datasource.password" value="123456"/>
    </properties>
    <!--尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境-->
    <environments default="dev">
        <environment id="dev">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${datasource.driver}"/>
                <property name="url" value="${datasource.url}"/>
                <property name="username" value="${datasource.username}"/>
                <property name="password" value="${datasource.password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 使用相对于类路径的资源引用 -->
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  • 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
  • 28
  • 29
  • 30
2、创建SqlSessionFactory对象并获取SqlSession实例
package com.tyler.mybatis.service;

import com.tyler.mybatis.domain.User;
import com.tyler.mybatis.mapper.UserMapper;
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.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class BasicTestDemo {

    private static SqlSession sqlSession;

    @BeforeAll
    static void setup() throws IOException {
        InputStream resource = Resources.getResourceAsStream("config/mybatis-config.xml");
		// 创建SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resource);
        // 获取SqlSession 实例
        sqlSession = sqlSessionFactory.openSession();
    }
}

  • 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
  • 28
  • 29
  • 30
3、 使用SqlSession查询数据库
@Test
void testSqlSession(){
    // 这里的第一个参数是我们定义的Mapper 接口的全限定名+对应的方法,第二个参数是方法对应的参数
    User user = sqlSession.selectOne("com.tyler.mybatis.mapper.UserMapper.selectUser", 1);
    assertEquals("Tyler", user.getName());
}

/**
 * 也可以通过SqlSession获取到对应的Mapper接口,然后再调用对应的方法
 */
@Test
void testSession(){
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    User user = userMapper.selectUser(3);
    assertEquals("Silver", user.getName());
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

注意: SqlSessionFactoryBuilder只是用来创建SqlSessionFactory实例,一旦SqlSessionFactory实例被创建,则SqlSessionFactoryBuilder就没用了.

SqlSessionFactory一旦被创建就应该在应用中一直存在,也就是说它应该是一个全局对象(application级别)。

SqlSession 不是线程安全的,因此对于每个线程都应该有自己的一个SqlSession实例,也就是应该是请求方法的作用域。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/158247
推荐阅读
相关标签
  

闽ICP备14008679号