文档章节

单一使用Mybatis, SqlSession 注意项

蛐蛐未加V
 蛐蛐未加V
发布于 2017/04/02 18:02
字数 286
阅读 8
收藏 0

###这是读取mybatis配置得到SqlSessionFactory的代码块

public static org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory;

    static
    {
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            com.map.mapper.SqlSessionFactory.sqlSessionFactory.getConfiguration().addMapper(Map.class);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

这是从sqlSessionFactory 里取一个SqlSession出来保持对数据库的连接。但是这里需要特别注意的一点是在完成数据库操作后 一定要执行 session.close(); 关闭对数据库的连接。

    public List<HotSpot> getHotSpot(int merchat_id)
    {

        SqlSession session = com.map.mapper.SqlSessionFactory.sqlSessionFactory.openSession();
        Map map = session.getMapper(Map.class);
        List<HotSpot> hotSpot = map.getHotSpot(merchat_id);
        session.close();
        return hotSpot;
    }

如果不连接会导致一个怎样的后果呢?比如下面一段代码(mapService调用的底层方法都是依赖SqlSession对数据库的操作)会导致大量的无效连接占用着数据库的连接资源,整个程序会hang住,让人感觉以为是程序的死循环,其实是 SqlSession 没有关闭导致了大量的连接一直耗费着数据库的资源而hang住了。所以我们写代码一定要注意下。

for (Merchant chat : list_merchat) {

            List<HotSpot> list_hotSpot = mapService.getHotSpot(chat.getMerchat_id());
            for (HotSpot hotspot : list_hotSpot) {
                Coordinate coordinate = mapService.getCoordinate(hotspot.getCoordinate_id());
                hotspot.setHotspot_coord(coordinate);
            }
            chat.setHotspots(list_hotSpot);
        }

© 著作权归作者所有

蛐蛐未加V
粉丝 16
博文 12
码字总数 7369
作品 1
程序员
私信 提问
Mybatis 学习笔记一 基本使用

maven依赖 配置 mybatis配置文件 注意,configuration配置下各个配置项的顺序: mapper配置 测试 源码 github地址

晨猫
2018/11/16
10
0
【Smart插件】smart-plugin-mybatis 介绍

smart-plugin-mybatis 是Smart框架的一个Mybatis插件,使用这个插件你可以比较方便的使用Mybatis。 这里主要介绍如何在Smart中使用该插件。 smart-plugin-mybatis插件将mybatis的配置信息从m...

Liuzh_533
2014/04/09
705
3
Mybatis缓存(1)--------系统缓存及简单配置介绍

前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存; 自定义的缓存,比如Redis、Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍。 在这里主要记录系统缓...

JJian
2018/07/29
0
0
Mybatis学习系列(七)缓存机制

Mybatis缓存介绍 MyBatis提供一级缓存和二级缓存机制。 一级缓存是Sqlsession级别的缓存,Sqlsession类的实例对象中有一个hashmap用于缓存数据。不同的Sqlsession实例直接hashmap互不影响。M...

仍是少年
2018/07/12
0
0
Mybatis官方文档——入门

入门 安装 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。 如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中: org.mybatis mybatis ...

alexanda2000
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部