- SqlSessionFactoryBuilder
- SqlSessionFactory
- SqlSession
作用:通过加载和渲染配置项,创建SqlSessionFacroty。
所以该类的实例在创建完SqlSessionFacroty之后基本就没用了,所以不要采用全局变量来保存这个类的实例。
// 这是官网的一个实例 String resource = "org/mybatis/example/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
2.SqlSessionFacroty构建SqlSessionFactory既可以使用xml配置文件,也可以直接使用java代码,但更推荐使用xml,修改起来比较方便,而且复用程度也很高。
作用:用来创建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文件的配置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)