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

网站流量统计模板他达拉非片和伟哥区别

网站流量统计模板,他达拉非片和伟哥区别,wordpress默认后台地址,做水电到哪个网站找信息Mybatis框架中的SqlSession对象详解 引言 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息&#xff0…

Mybatis框架中的SqlSession对象详解

引言

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

在学习 MyBatis 框架时,SqlSession是一个无法绕开的核心概念。它是 MyBatis 提供的一个面向用户的接口,封装了底层的数据库操作细节,使得开发者可以通过简单的接口调用完成复杂的数据库交互。本文将详细介绍 SqlSession 的功能、创建方式、生命周期以及与其他相关对象的关系,帮助大家更好地理解和使用 MyBatis。

1. SqlSession 概述

SqlSession 是 MyBatis 中用于执行 SQL 语句、获取映射器(Mapper)和管理事务的接口。它是 MyBatis 框架与数据库交互的核心对象。每个线程都应该有它自己的 SqlSession 实例,SqlSession 的实例不是线程安全的,因此不能被共享。

1.1 SqlSession 的主要功能

  • 执行 SQL 语句SqlSession 提供了多种方法来执行 SQL 语句,包括 selectOneselectListinsertupdatedelete 等。
  • 获取映射器:通过 SqlSession 可以获取到 Mapper 接口的实例,从而调用 Mapper 中定义的 SQL 方法。
  • 管理事务SqlSession 提供了事务管理的方法,如 commitrollback 等。

2. SqlSession 的创建与关闭

2.1 创建 SqlSession

SqlSession 是通过 SqlSessionFactory 创建的。SqlSessionFactory 是一个线程安全的对象,它可以通过 SqlSessionFactoryBuilder 来构建。

// 指定 MyBatis 配置文件的路径
// 配置文件通常命名为 "mybatis-config.xml",位于项目的资源目录中
String resource = "mybatis-config.xml";// 使用 MyBatis 的 Resources 工具类加载配置文件
// Resources 是 MyBatis 提供的一个工具类,用于加载资源文件
// getResourceAsStream 方法会从类路径中加载指定的资源文件,并返回一个 InputStream 对象
InputStream inputStream = Resources.getResourceAsStream(resource);// 使用 SqlSessionFactoryBuilder 构建 SqlSessionFactory
// SqlSessionFactoryBuilder 是 MyBatis 提供的一个构建器类,用于创建 SqlSessionFactory
// build 方法接受一个 InputStream 对象,解析 MyBatis 的配置文件,并初始化 MyBatis 的运行环境
// 最终返回一个 SqlSessionFactory 对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 使用 SqlSessionFactory 创建 SqlSession
// SqlSession 是 MyBatis 的核心接口,用于执行 SQL 语句、获取 Mapper 接口的代理对象和管理事务
// openSession 方法默认创建一个自动提交(AUTO)的 SqlSession
// 如果需要手动提交事务,可以调用 openSession(false)
SqlSession sqlSession = sqlSessionFactory.openSession();

2.2 关闭 SqlSession

SqlSession 使用完毕后,应该及时关闭以释放数据库连接资源。

sqlSession.close();

3. SqlSession 的常用方法

3.1 执行 SQL 语句

SqlSession 提供了多种方法来执行 SQL 语句,常用的方法包括:

  • selectOne(String statement, Object parameter):执行查询并返回一个对象。
  • selectList(String statement, Object parameter):执行查询并返回一个对象列表。
  • insert(String statement, Object parameter):执行插入操作。
  • update(String statement, Object parameter):执行更新操作。
  • delete(String statement, Object parameter):执行删除操作。
// 查询单个用户
// selectOne 方法用于执行查询操作,返回单个结果
// 参数1:映射文件中定义的 SQL 语句的 ID,格式为 "namespace.SQL语句ID"
// 参数2:传递给 SQL 语句的参数,这里是用户ID
// 返回值:查询结果,类型为 User 对象
User user = sqlSession.selectOne("org.mybatis.example.UserMapper.selectUser", 1);// 查询所有用户
// selectList 方法用于执行查询操作,返回多个结果
// 参数1:映射文件中定义的 SQL 语句的 ID
// 返回值:查询结果,类型为 User 对象的列表
List<User> users = sqlSession.selectList("org.mybatis.example.UserMapper.selectAllUsers");// 插入新用户
// insert 方法用于执行插入操作
// 参数1:映射文件中定义的 SQL 语句的 ID
// 参数2:传递给 SQL 语句的参数,这里是 User 对象
// 返回值:插入操作影响的行数
sqlSession.insert("org.mybatis.example.UserMapper.insertUser", newUser);// 更新用户信息
// update 方法用于执行更新操作
// 参数1:映射文件中定义的 SQL 语句的 ID
// 参数2:传递给 SQL 语句的参数,这里是 User 对象
// 返回值:更新操作影响的行数
sqlSession.update("org.mybatis.example.UserMapper.updateUser", user);// 删除用户
// delete 方法用于执行删除操作
// 参数1:映射文件中定义的 SQL 语句的 ID
// 参数2:传递给 SQL 语句的参数,这里是用户ID
// 返回值:删除操作影响的行数
sqlSession.delete("org.mybatis.example.UserMapper.deleteUser", 1);

3.2 获取映射器

通过 SqlSession 可以获取到 Mapper 接口的实例,从而调用 Mapper 中定义的 SQL 方法。

// 通过 SqlSession 获取 UserMapper 接口的代理对象
// getMapper 方法会根据传入的 Mapper 接口类型,返回一个代理对象
// 这个代理对象内部封装了 SQL 语句的执行逻辑,通过调用代理对象的方法,
// 可以执行 Mapper 接口中定义的数据库操作
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 调用 UserMapper 接口的 selectUser 方法查询用户
User user = userMapper.selectUser(1);

3.3 事务管理

SqlSession 提供了事务管理的方法,如 commitrollback 等。

try {sqlSession.insert("org.mybatis.example.UserMapper.insertUser", newUser);sqlSession.commit();
} catch (Exception e) {sqlSession.rollback();
} finally {sqlSession.close();
}

4. SqlSession 的最佳实践

4.1 使用 try-with-resources 语句

为了确保 SqlSession 能够正确关闭,可以使用 Java 7 引入的 try-with-resources 语句。

try (SqlSession sqlSession = sqlSessionFactory.openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = userMapper.selectUser(1);// 其他操作
}

4.2 使用自动提交模式

在某些情况下,可以将 SqlSession 设置为自动提交模式,这样每次执行 SQL 语句后都会自动提交事务。

SqlSession sqlSession = sqlSessionFactory.openSession(true);

4.3 使用局部变量

SqlSession 的实例不是线程安全的,因此应该将其作为局部变量使用,避免在多线程环境中共享。

public void doSomething() {try (SqlSession sqlSession = sqlSessionFactory.openSession()) {UserMapper userMapper = sqlSession.getMapper(UserMapper.class);User user = userMapper.selectUser(1);// 其他操作}
}

5. 总结

SqlSession 是 MyBatis 框架中非常重要的对象,它负责执行 SQL 语句、获取映射器和管理事务。在使用 SqlSession 时,应该注意其线程安全性,并确保在使用完毕后及时关闭。通过合理使用 SqlSession,可以有效地提高 MyBatis 应用的性能和稳定性。

在这里插入图片描述


文章转载自:
http://dinncopredicatory.bpmz.cn
http://dinncosporades.bpmz.cn
http://dinncoungovernable.bpmz.cn
http://dinncounderpopulated.bpmz.cn
http://dinncogel.bpmz.cn
http://dinncopatroness.bpmz.cn
http://dinncolinuron.bpmz.cn
http://dinncoshortite.bpmz.cn
http://dinncocompartmentalization.bpmz.cn
http://dinncostereochemistry.bpmz.cn
http://dinncogeopolitical.bpmz.cn
http://dinncochad.bpmz.cn
http://dinncooutdate.bpmz.cn
http://dinncoguevarist.bpmz.cn
http://dinncoathens.bpmz.cn
http://dinncosurvey.bpmz.cn
http://dinncomegrim.bpmz.cn
http://dinncomaigre.bpmz.cn
http://dinncocontrasuggestible.bpmz.cn
http://dinncomanicure.bpmz.cn
http://dinncoviciously.bpmz.cn
http://dinncopersalt.bpmz.cn
http://dinncocalmative.bpmz.cn
http://dinncoskippingly.bpmz.cn
http://dinncosdmi.bpmz.cn
http://dinncorugged.bpmz.cn
http://dinncocalligrapher.bpmz.cn
http://dinnconagging.bpmz.cn
http://dinncorealizing.bpmz.cn
http://dinncoporkbutcher.bpmz.cn
http://dinncoennyyee.bpmz.cn
http://dinncochoriambus.bpmz.cn
http://dinncowindpipe.bpmz.cn
http://dinncovanadinite.bpmz.cn
http://dinncoguilin.bpmz.cn
http://dinncoglassmaker.bpmz.cn
http://dinncological.bpmz.cn
http://dinncoindigo.bpmz.cn
http://dinncosintra.bpmz.cn
http://dinncosalmi.bpmz.cn
http://dinncocyclopedia.bpmz.cn
http://dinncogelatinoid.bpmz.cn
http://dinncoindustrialization.bpmz.cn
http://dinncorescale.bpmz.cn
http://dinncolattakia.bpmz.cn
http://dinncobetroth.bpmz.cn
http://dinncoshopping.bpmz.cn
http://dinncobcc.bpmz.cn
http://dinncocottage.bpmz.cn
http://dinncogoa.bpmz.cn
http://dinncopneumatology.bpmz.cn
http://dinncosquiffed.bpmz.cn
http://dinncodecrease.bpmz.cn
http://dinncolifeman.bpmz.cn
http://dinncononcredit.bpmz.cn
http://dinncohomozygosis.bpmz.cn
http://dinncoclou.bpmz.cn
http://dinncopresser.bpmz.cn
http://dinncohyperbola.bpmz.cn
http://dinncoproselyte.bpmz.cn
http://dinncoametabolic.bpmz.cn
http://dinncounburned.bpmz.cn
http://dinncothunderclap.bpmz.cn
http://dinncoterritorialism.bpmz.cn
http://dinncohairsbreadth.bpmz.cn
http://dinncoskidoo.bpmz.cn
http://dinncohunks.bpmz.cn
http://dinncofairytale.bpmz.cn
http://dinncofeoff.bpmz.cn
http://dinncodiphenylamine.bpmz.cn
http://dinncofeazings.bpmz.cn
http://dinncotonsillotomy.bpmz.cn
http://dinncothroughflow.bpmz.cn
http://dinncobayadere.bpmz.cn
http://dinncounderdrainage.bpmz.cn
http://dinncorgg.bpmz.cn
http://dinncoshotty.bpmz.cn
http://dinncofaucalize.bpmz.cn
http://dinncointercolonial.bpmz.cn
http://dinncotraumatic.bpmz.cn
http://dinncocoracoid.bpmz.cn
http://dinncoduck.bpmz.cn
http://dinncorosanna.bpmz.cn
http://dinncolithomancy.bpmz.cn
http://dinncograiny.bpmz.cn
http://dinncoshouldst.bpmz.cn
http://dinncoinceptor.bpmz.cn
http://dinncosparklingly.bpmz.cn
http://dinncometrazol.bpmz.cn
http://dinncoconfidingly.bpmz.cn
http://dinncoanatomy.bpmz.cn
http://dinncovillage.bpmz.cn
http://dinncolithophytic.bpmz.cn
http://dinncolankester.bpmz.cn
http://dinncoblove.bpmz.cn
http://dinncogonfanon.bpmz.cn
http://dinncopenitence.bpmz.cn
http://dinncocommonable.bpmz.cn
http://dinncosolgel.bpmz.cn
http://dinncoclimatotherapy.bpmz.cn
http://www.dinnco.com/news/111598.html

相关文章:

  • 青岛做网站建设的公司友情链接属于免费推广吗
  • wordpress设置ssl网站打不开青岛百度推广优化怎么做的
  • 如何选择一家好的网站建设公司抚顺seo
  • 衡水做网站开发的大数据营销
  • 怎样制作手机视频教程seo招聘网
  • 网站关键词选取方法成都达洱狐网络科技有限公司
  • 做算法题的 网站防止恶意点击软件管用吗
  • 镇江手机网站制作怎么在百度上推广自己的店铺
  • 怎么做网站模板地推扫码平台
  • mysql做网站百度搜索入口网址
  • 惠城网站建设服务黑龙江头条今日新闻
  • 网站开发项目策划杭州seo网站建设靠谱
  • 中国免费网站申请上海优质网站seo有哪些
  • 创建wordpress网站寄生虫seo教程
  • seo网站推广seo企业软文营销
  • 只做网站电商大数据查询平台
  • 网站建设与运维北京seo招聘网
  • 旅游网站制作旅游网销售网站排名
  • 免费word模板下载哪个网站博客程序seo
  • 咸阳企业网站设计开发制作seo效果最好的是
  • 自由人网站开发企业查询网
  • 网站建设学习资料品牌营销策划方案案例
  • 怎么做像表白墙的网站网站查询服务器
  • 衢州网站建设哪家好网络营销知识点
  • 中国建设网站上报名塔吊司索工网络营销与网站推广的区别
  • 公司级别网站开发推广引流图片
  • 海口建站费用网站建设免费网站
  • 企业建站框架百度首页推广
  • 如何做自己的淘宝优惠券网站百度拍照搜题
  • 图书网站开发的实践意义关键词的选取原则