精华内容
下载资源
问答
  • sqlsession

    2020-11-12 17:40:48
    同一个select,在同一个事务中(同一个sqlsesion对象),会优先从sqlsession缓存中获取。 容易出问题的代码: 在一个较大的事务中,某个函数A内调用了select,并且对结果进行了操作,比如set。然后在当前函数A中又...

    同一个select,在同一个事务中(同一个sqlsesion对象),会优先从sqlsession缓存中获取。

    容易出问题的代码:

    在一个较大的事务中,某个函数A内调用了select,并且对结果进行了操作,比如set。然后在当前函数A中又调用了另一个函数B,函数B内也调用了此select,并且需要对结果进行判断。

    因为在函数A中对结果进行了操作,并且缓存到了sqlsession中。所以在函数B中拿到的信息并不是和数据库中的一样。可能会对函数B的一些逻辑(权限,if等)判断有影响,导致整个事务逻辑失败。

    展开全文
  • SqlSession

    2021-04-13 22:03:51
    import org.apache.ibatis.session.SqlSession; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBoot...

    package com.cy.pj.sys.dao;
    
    import org.apache.ibatis.session.SqlSession;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.sql.Connection;
    
    @SpringBootTest
    public class MybatisTests {
        /**
         * SqlSession时mybatis框架中实现与数据库进行会话的入口对象
         * (假如可以通过此对象获取与数据库的连接 --表示可以通过mybatis框架实现与数据库会话)
         */
        @Autowired
        private SqlSession sqlSession;  // 这个sqlSession指向的对象是谁?(sqlSessionTemplate)
    
        @Test
        void testGetConnection() {
    
            Connection conn = sqlSession.getConnection();  // 连接来自于哪里?(连接池)
            System.out.println("connection==" + conn);
        }
    }
    

     

    展开全文
  • SqlSession 获取SqlSession并运行mysql
  • SqlSession介绍

    2018-05-06 09:25:00
    SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。SqlSession对象完全包含以...

    SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。
    它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。
    SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的SQL语句。
    每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession 实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet当中的HttpSession 对象中。使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭它。

    SqlSession 的常用方法如下:
    (1)int insert(String statement)。插入方法,参数statement是在配置文件中定义的<insert.../>元素的id,返回执行SQL语句所影响的行数。
    (2)int insert(String statement,Object parameter)。插入方法,参数statement是在配置文件中定义的<insert.../>元素的id,parameter是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
    (3)int update(String statement) 。更新方法,参数statement是在配置文件中定义的<update.../>元素的id,返回执行SQL语句所影响的行数。
    (4)int update(String statement,Object parameter)。更新方法,参数statement是在配置文件中定义的<update.../>元素的id,parameter 是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
    (5)int delete(String statement) 。删除方法,参数statement是在配置文件中定义的<delete.../>元素的id。返回执行SQL 语句所影响的行数。
    (6)int delete(String statement,Object parameter)。删除方法,参数statement 是在配置文件中定义的<delete.../>元素的id,parameter 是插入所需的参数,通常是对象或者Map,返回执行SQL语句所影响的行数。
    (7)<T> T selectOne(String slatement)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,返回执行SQL语句查询结果的泛型对象,通常查询结果只有一条数据时才使用。
    (8)<T> T selectOne(String statement,Object parameter)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,parameter是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象,通常查询结具只有一条数据时才使用。
    (9)<E> List<E> selectList(String statemenl)。查询方法,参数是在配置文件中定义的<select.../>素的id,返回执行SQL话句查询结果的泛型对象的集合。
    (10)<E> List<E> selectList(String statement,Object parameter)。杳洵方法,参数statement是在配置文件中定义的<select../>元素的id,parameter 是查询所需的参数,通常是对象或者Map,返回执行SQL语句查询结果的泛型对象的集合。
    (11)<E> List<E> selectList(String statement,Object parameter,RowBounds rowBounds)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,parameter是查询所需的参数,通常是对象或者Map,RowBounds对象用于分页,它的两个属性: offset指查询的当前页数; limit指当前页显示多少条数据。返回执行SQL语句查询结果的泛型对象的集合。
    (12)<K,V> Map<K,V> selectMap(String statement,String mapKey) 。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,mapKey是返回数据的其中一个列名,执行SQL语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value 是封装的对象。
    (13)<K,V> Map<K,V> selectMap(String statement,0bject parameler,Sting mapKey)。查询方法,参数statement是在配置文件中定义的<select.../>元素的id,parameter是查询所需的参数,通常是对象或者Map,mapKey 是返回数据的其中一个列名,执行SQL语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value是封装的对象。
    (14)<K,V> Map<K,V>selectMap(Sting statement,Object parameter,Sting mapKey,RowBounds rowBounds)。查询方法,参数statement 是在配置文件中定义的<select.../>元素的id,parameter 是否询所需的参数,通常是对象或者Map,mapKey 是返回数据的其中一个列名,RowBounds 对象用于分页。执行SQL 语句查询结果将会被封装成一个Map集合返回,key就是参数mapKey传入的列名,value 是封装的对象。
    (15)void select(String statement,ResultHandler handler)。查询方法,参数statement是在配置文件中定义的<select../>元素的id,ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
    (16)void select(String statement,Object parameter,ResultHander handler)。查询方法,参数statement是在配置文件中定义的<select../>元素的id,parameter 是查询所需的参数,通常是对象或者Map, ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
    (17)void select(String statement,Object parameter,RowBounds rowBounds,ResultHandrhandler)。查询方法,参数statement是在配置文件中定义的<selec.../>元素的id,是查询所需的参数,通常是对象或者Map,RowBounds 对象用于分页,parameter
    ResultHandler对象用来处理查询返回的复杂结果集,通常用于多表查询。
    (18)void commit()。提交事务。
    (19)void rollback()。回滚事务。
    (20)void close()。关闭SqlSession对象。
    (21)Connection getConnection()。获得JDBC的数据库连接对象。
    (22)<T> T getMapper(Class<T> type)。返回mapper接口的代理对象,该对象关联了SqlSession对象,开发者可以通过该对象直接调用方法操作数据库,参数type是Mapper的接口类型。Mybatis官方手册建议通过mapper对象访问MyBatis。

    展开全文
  • Mybatis SqlSession

    2016-03-22 17:41:15
    简介SqlSession是Mybatis中对数据库进行操作的基础,一切对于数据库的操作的承载着均是SqlSession1.SqlSession的由来SqlSession是由 SqlSessionFactor通过 sqlSessionFactory.openSession()方法获得,而...

    简介

    SqlSession是Mybatis中对数据库进行操作的基础,一切对于数据库的操作的承载着均是SqlSession

    1.SqlSession的由来

    SqlSession是由 SqlSessionFactor通过 sqlSessionFactory.openSession()方法获得,而SqlSessionFactory创建是通过SqlSessionFactoryBuilder().build(“配置文档”)进行配置创建的
    我们先来看看在配置文档中关于SqlSessionFactory相关信息的创建

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration
            PUBLIC ".//mybatis.orgDTD Config.3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!--和spring整合后environment配置将废除-->
        <environments default="development">
            <environment id="development">
                <!--使用JDBC事务管理-->
                <transactionManager type="JDBC"></transactionManager>
                <!--数据库连接池-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"></property>
                    <property name="url" value="jdbc:mysql://127.0.0.1:3306/imooc"></property>
                    <property name="username" value="root"></property>
                    <property name="password" value="root"></property>
    
                </dataSource>
            </environment>
        </environments>
    
    
        <!--加载映射文件-->
        <mappers>
           <mapper resource="Student.xml"></mapper>
        </mappers>
    
    
    
    
    </configuration>

    我们可以看到在这个配置文件中分为两个部分,第一部分为JDBC信息,其中包括连接池信息,数据库连接信息;第二部分是映射文件的加载。
    SqlSessionFactory所需要加载的就是第一部分即JDBC信息(因为mybatis是对ibatis的优化封装而ibatis是对JDBC模块的优化封装)通过框架内部反射将相关信息进行绑定,之后我们便能在我们的程序中使用如下代码来获得SqlSession

    //得到配置文件
    InputStream inputStream= Resources.getResourceAsStream(resource);
    //穿件会话工厂
    SqlSessionFactory sqlSessionFactory = 
    new SqlSessionFactoryBuilder().build(inputStream);
    //通过工厂创建Sqlsession
                SqlSession sqlSession = sqlSessionFactory.openSession();

    2.未完待续

    展开全文
  • Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@126562] was not registered for synchronization because synchronization is not active JDBC Connection ...
  • SqlSession 创建过程.pdf

    2020-05-21 14:37:06
    我们都知道 SqlSession 是 MyBatis 执行 SQL 的门面,那么 MyBatis 的 SqlSession 的创建过程是如何的呢?看看这里就知道了!
  • SqlSession解析

    千次阅读 2016-12-28 10:53:48
    在Mybatis中向DAO层提供的这个能够与数据库交互并执行SQL语句的对象叫做SqlSession。这个是Mybatis最核心的一个对象。SqlSession完全包含了面向数据库执行SQL命令所需的全部方法。
  • MyBatis sqlSession

    千次阅读 2017-01-18 09:52:36
    工作中,需要学习一下MyBatis sqlSession的产生过程,翻看了mybatis-spring的源码,阅读了一些mybatis的相关doc,对mybatis sqlSession有了一些认知和理解,这里简单的总结和整理一下。    
  • Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@42607e80] was not registered for synchronization because synchronization is not active JDBC Connection ...
  • mybatis 创建Sqlsession

    2020-02-14 21:25:06
    SqlSession sqlSession = sqlSessionFactory.openSession(); 第一步:org.apache.ibatis.session.defaults.DefaultSqlSessionFactory#openSession() public SqlSession openSession() { r...
  • 该项目应用Springboot框架,MyBatis持久层与Sqlsession映射进行数据查询
  • MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用

    万次阅读 多人点赞 2017-06-23 15:35:17
    本文介绍的SqlSessionFactory和SqlSession.可以通过了解SqlSessionFactory接口和SqlSession接口以及两个的实现类入手,去看源码了解实现过程.最好能把项目下载到本地,慢慢分析实现过程.Myabtis官网:...
  • MyBatis - SqlSession

    2018-11-30 12:34:00
    本章先从sqlsession开始。   一、SqlSession 1、创建 正如其名,Sqlsession对应着一次数据库会话。由于数据库回话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要...
  • Mybatis执行sqlSession.insert()和sqlSession.update() 在执行sqlSession.insert()和sqlSession.update()后需要进行 sqlSession.commit(),否则数据库不会插入数据,而且自增长id的情况下,在下一次成功的时候,会将...
  • Mybatis sqlsession解析

    2018-11-14 14:47:00
    一、sqlsession获取过程 1、基础配置  在mybatis框架下进行的数据库操作都需要首先获取sqlsession,在mybatis与spring集成后获取sqlsession需要用到sqlsessionTemplate这个类。 首先在spring对...
  • SqlSession:应用程序和数据库之间交互的一个单线程对象(非线程安全的),数据库的C、R、U、D及事务的处理接口,select | update | delete | insert | commit | rollback | close | flushStatements等 ...
  • Mybatis之SqlSession

    2018-09-02 13:56:48
    再执行删除语句的时候,发现两段代码等效的结果 ... sqlSession.selectList("Message.deleteOne",id);   sqlSession.delete("Message.deleteOne",id); sqlSession.commit();  ...
  • mybatis-sqlSession

    2019-03-24 18:40:00
    一、组件 1、SqlSessionFactoryBuilder: 根据配置信息或者代码生成 SqlSessionFactory;...2、SqlSessionFactory: 生成 sqlSession 会话,单例模式; 3、SqlSession: 既可以发送sql去执行并返回结果,也...
  • Mybatis之sqlSession

    2019-09-25 03:35:24
    sqlSession的作用:1、向sql语句传入参数;2、执行sql语句;3、获取执行sql语句的结果;4、事物的控制;如何得到sqlSession:1、通过配置文件获取数据库链接的相关信息;2、通过配置信息构建SqlSessionFactory;3、...
  • 创建SqlSessionFactory,new SqlSessionFactoryBuilder().build()方法来创建 openSession()创建SqlSession核心对象; 用openSession()方法创建SqlSession对象:会开启一个事务,需要手动提交事务; ...
  • 获取SqlSession的分析

    2021-02-05 19:23:20
    获取SqlSession的分析: InputStream inputStream = Resources.getResourceStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build(inputStream); SqlSession ...
  • sqlSession的优化

    2020-10-10 21:55:52
    JDK动态代理优化SqlSession资源开启与关闭 目标 使用jdk动态代理增强每一个dao数据库方法初始化资源和关闭资源 优化需求 对于每个业务层方法都需要如下操作 package com.itheima.service; import ...
  • 工作中,需要学习一下MyBatis sqlSession的产生过程,翻看了mybatis-spring的源码,阅读了一些mybatis的相关doc,对mybatis sqlSession有了一些认知和理解,这里简单的总结和整理一下。 首先, 通过翻阅源码,...
  • mybatis之SqlSession

    2020-06-14 21:05:01
    .SqlSession DefaultSqlSession核心字段的含义如下: // 配置对象 private final Configuration configuration; // 底层依赖的Executor对象 private final Executor executor; // 是否自动提交事务 private ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,474
精华内容 4,189
关键字:

sqlsession