当前位置: 首页 > news >正文

北辰网站建设公司/优化英语

北辰网站建设公司,优化英语,做推广网站有什么,湖州市建设局网站6MyBatis 的 SqlSession 是框架的核心接口之一,它是应用程序与 MyBatis 交互的顶层 API,用于执行 SQL 命令、管理事务和访问数据库。以下是关于 SqlSession 的详细说明: 1. 核心功能 (1) 执行 SQL 操作 增删改查:通过方法如 sele…

MyBatis 的 SqlSession 是框架的核心接口之一,它是应用程序与 MyBatis 交互的顶层 API,用于执行 SQL 命令、管理事务和访问数据库。以下是关于 SqlSession 的详细说明:


1. 核心功能

(1) 执行 SQL 操作
  • 增删改查:通过方法如 selectOne, selectList, insert, update, delete 直接执行映射的 SQL 语句。
  • 动态参数绑定:支持传递参数对象(如 POJO、Map、基本类型)到 SQL 中。
// 示例:查询用户
User user = sqlSession.selectOne("com.example.mapper.UserMapper.selectById", 1);// 示例:插入用户
int rows = sqlSession.insert("com.example.mapper.UserMapper.insert", newUser);
(2) 事务管理
  • 手动提交/回滚:通过 commit()rollback() 控制事务。
  • 自动提交:可在创建 SqlSession 时设置 autoCommit=true(默认关闭)。
try {sqlSession.insert("insertUser", user);sqlSession.commit(); // 显式提交事务
} catch (Exception e) {sqlSession.rollback(); // 回滚事务
}
(3) 获取 Mapper 接口
  • 通过 getMapper(Class<T> type) 获取 Mapper 接口的代理对象,以面向接口的方式操作 SQL。
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.selectById(1);
(4) 管理本地缓存(一级缓存)
  • 缓存范围:默认开启,缓存范围为 SqlSession 级别(会话级缓存)。
  • 缓存失效:执行更新操作(insert/update/delete)或调用 clearCache() 会清空缓存。
sqlSession.clearCache(); // 手动清理一级缓存

2. 生命周期与线程安全

(1) 生命周期
  • 创建:通过 SqlSessionFactory.openSession() 创建。
  • 使用:在单个请求或操作中执行 SQL。
  • 关闭:必须显式调用 close() 释放资源(或使用 try-with-resources)。
// 正确用法:确保资源释放
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {User user = sqlSession.selectOne("selectUserById", 1);
} // 自动关闭
(2) 线程安全
  • 非线程安全SqlSession 实例不应在多线程间共享。每个线程应使用独立的 SqlSession

3. 创建方式

通过 SqlSessionFactory 创建 SqlSession,支持以下参数:

  • autoCommit:是否自动提交事务(默认 false)。
  • executorType:执行器类型(SIMPLE, REUSE, BATCH)。
  • connection:指定 JDBC 连接(适用于需要复用连接的场景)。
// 默认执行器(SIMPLE),手动提交事务
SqlSession sqlSession = sqlSessionFactory.openSession();// 自动提交事务
SqlSession autoCommitSession = sqlSessionFactory.openSession(true);// 使用批量执行器
SqlSession batchSession = sqlSessionFactory.openSession(ExecutorType.BATCH);

4. 核心方法

方法

说明

<T> T selectOne(String statement, Object parameter)

查询单条记录,参数为 SQL 标识和参数对象。

<E> List<E> selectList(...)

查询多条记录,支持分页(RowBounds)。

int insert(String statement, Object parameter)

执行插入操作。

int update(String statement, Object parameter)

执行更新操作。

int delete(String statement, Object parameter)

执行删除操作。

void commit()

提交事务(需显式调用,除非 autoCommit=true)。

void rollback()

回滚事务。

<T> T getMapper(Class<T> type)

获取 Mapper 接口的动态代理对象。

void clearCache()

清空当前会话的一级缓存。

Connection getConnection()

获取底层 JDBC 连接(需谨慎使用)。


5. 一级缓存机制

  • 缓存范围:同一个 SqlSession 内的多次相同查询会命中缓存。
  • 缓存失效条件
    • 执行了 insert/update/delete
    • 调用了 clearCache()
    • 提交或回滚事务(部分配置下)。

6. 与 SqlSessionFactory 的关系

  • 工厂模式SqlSessionFactory 是生产 SqlSession 的工厂,通常全局唯一(应用生命周期内)。
  • 资源开销:创建 SqlSession 的代价较低,但需及时关闭以避免连接泄漏。

7. 最佳实践

  1. 使用 try-with-resources:确保 SqlSession 正确关闭。
  2. 避免长会话:单个 SqlSession 不应长时间存活,防止缓存膨胀。
  3. 优先使用 Mapper 接口:通过 getMapper() 提高代码可读性和类型安全。
  4. 显式事务控制:在需要时手动提交事务,避免意外修改。

总结

SqlSession 是 MyBatis 的核心交互接口,负责 SQL 执行、事务管理和缓存控制。正确使用它的生命周期和事务机制,能有效提升数据库操作的安全性和性能。结合 Mapper 接口和 Spring 等框架的事务管理(如 @Transactional),可以进一步简化开发流程。

http://www.whsansanxincailiao.cn/news/32055744.html

相关文章:

  • 网络营销课程实训报告/深圳企业seo
  • 杨浦企业网站建设/百度热度榜搜索趋势
  • 网站名称注册程序/网络营销推广是做什么的
  • 舆情网站推荐/国外域名注册平台
  • 网站备案的规定/企业网站制作哪家好
  • 字体在线设计网站/志鸿优化网
  • 山东网站建设最便宜/网络推广平台软件
  • 前端直播网站怎么做/媒体:多地新增感染趋势回落
  • 请问婚庆网站建设该怎么做呢/在百度上打广告找谁
  • 电子商务网站开发原则/网站的营销策略
  • 做设计在哪个网站上找高清图/网上怎么推广公司产品
  • 做电销要在哪个网站上找资源/2345手机浏览器
  • 专门做兼职的网站/成都关键词优化平台
  • 南庄做网站/企业网站的网络营销功能
  • 教育培训网站建设方案模板/深圳全网营销方案
  • 移动网站做微信小程序/seo哪家强
  • 设计公司是建筑企业吗/南昌网站seo
  • 福州市做公司网站哪家好/如何制作一个网页页面
  • 做er图的网站/上海专业seo
  • 做编程网站有哪些内容/网络优化培训骗局
  • 苏州做网站的公司/软文素材网站
  • 网站销售好做吗/seo关键词排名优化系统
  • 做智能网站营销话术/营销的三个基本概念是什么
  • python 可以做网站吗/宁波关键词网站排名
  • 网站小视频怎么做/太原网站建设开发
  • 贫困户房屋建设补助在哪个网站公布/品牌策划包括哪几个方面
  • 10m带宽做下载网站/怎么快速优化关键词排名
  • 大型网站 div/项目宣传推广方案
  • 个人网站免费注册/域名免费注册
  • 做设计比较好的网站推荐/新乡百度关键词优化外包