栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

探索Mybatis核心组件及生命周期

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

探索Mybatis核心组件及生命周期

核心部件
  • SqlSessionFactoryBuilder
  • SqlSessionFactory
  • SqlSession
1.SqlSessionFactoryBuilder

作用:通过加载和渲染配置项,创建SqlSessionFacroty。
所以该类的实例在创建完SqlSessionFacroty之后基本就没用了,所以不要采用全局变量来保存这个类的实例。

// 这是官网的一个实例
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

构建SqlSessionFactory既可以使用xml配置文件,也可以直接使用java代码,但更推荐使用xml,修改起来比较方便,而且复用程度也很高。

2.SqlSessionFacroty

作用:用来创建SqlSession,其中SqlSession并不是线程安全的,所以几乎每一次请求都要创建一个实例,所以SqlSessionFacroty的实例在整个应用运行期间会被一直使用,所以这个类的实例一般采用单例保存起来备用。

每一次使用时都重新创建一个不可以吗?如果不考虑性能,貌似也没有太大毛病,而且官网也指出多次创建该类实例并不推荐。

//构建SqlSession
try (SqlSession session = sqlSessionFactory.openSession()) {
  //方式一
  Blog blog = (Blog) session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
  //方式二
  BlogMapper mapper = session.getMapper(BlogMapper.class);
  Blog blog = mapper.selectBlog(101);
}

除此之外还有另外一种不采用xml的写法:

//方式三
package org.mybatis.example;
public interface BlogMapper {
  @Select("SELECT * FROM blog WHERe id = #{id}")
  Blog selectBlog(int id);
}

说真的,这种不分离的写法,随着代码量的增加,真的很混乱,所以建议更规范的使用方式二中的方式。

3.SqlSession

作用:这就是你执行sql的类。
在web服务器中,每一次请求都会生成一个用户线程,而且该类实例并不是线程安全,所以该类的实例应该是线程独占的;每一次使用完毕都应该及时关闭该类实例。

使用方式见2.SqlSessionFactory吧。

总结

整体看Mybatis核心的组件只有这三个,其中SqlSession是需要经常打交道的一个,在项目中编写sql时会经常编写xml配置文件,接下来将全面的介绍xml文件的配置。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号