查看“基础:SqlSession的使用范围”的源代码
←
基础:SqlSession的使用范围
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Mybatis]] __TOC__ == 关于 == SqlSession、SqlSessionFactory 与 SqlSessionFactoryBuilder: # SqlSession中封装了对数据库的操作,如:查询、插入、更新、删除等(通过几个对象完成)。 # SqlSession是通过SqlSessionFactory创建; # SqlSessionFactory是通过SqlSessionFactoryBuilder进行创建(根据配置配置文件流)。 实例代码: <syntaxhighlight lang="java"> public class Mybatis_first { //会话工厂 private SqlSessionFactory sqlSessionFactory; @Before public void createSqlSessionFactory() throws IOException { // mybatis配置文件 String resource = "SqlMapConfig.xml"; // 得到配置文件流 InputStream inputStream = Resources.getResourceAsStream(resource); // 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } public void testFindUserById() { // 数据库会话实例 SqlSession sqlSession = null; try { // 创建数据库会话实例sqlSession sqlSession = sqlSessionFactory.openSession(); // SqlSession中封装了对数据库的操作,如:查询、插入、更新、删除等 // selectOne User user = sqlSession.selectOne("test.findUserById", 10); // selectList List<User> list = sqlSession.selectList("test.findUserByUsername", "张"); // insert sqlSession.insert("test.insertUser", user); // update sqlSession.update("test.updateUser", user); // delete sqlSession.delete("test.deleteUserById",18); ... } catch (Exception e) { e.printStackTrace(); } finally { if (sqlSession != null) { sqlSession.close(); } } } } </syntaxhighlight> == SqlSessionFactoryBuilder == 用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产,所以可以将SqlSessionFactoryBuilder当成一个工具类使用,'''最佳使用范围是方法范围,即方法体内局部变量'''; == SqlSessionFactory == 是一个接口,定义了openSession的不同重载方法,SqlSessionFactory的'''最佳使用范围是整个应用运行期间''',一旦创建后可以重复使用,通常以'''单例模式'''管理SqlSessionFactory; == SqlSession == 是一个面向用户的接口, sqlSession中定义了数据库操作,默认使用'''DefaultSqlSession'''实现类;<br/> 每个线程都应该有它自己的SqlSession实例。SqlSession的实例'''不能共享使用,它也是线程不安全的'''。因此'''最佳的范围是请求或方法范围'''。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。<br/> 打开一个 SqlSession;'''使用完毕就要关闭它'''。通常把这个关闭操作放到 finally 块中以确保每次都能执行关闭。如下: <syntaxhighlight lang="java"> SqlSession session = sqlSessionFactory.openSession(); try { // do work } finally { session.close(); } </syntaxhighlight>
返回至“
基础:SqlSession的使用范围
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息