MyBatis入门使用及其四大核心对象

MyBatis 简介

  • MyBatis 是一个半 ORM( 对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。开发人员直接编写原生态 SQL,可以严格控制 SQL 执行性能, 灵活度高
  • MyBatis 可以使用 XML 或注解来配置和映射原生信息, 将 POJO 映射成数据库中的记录, 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集

MyBaits 的优点

  • 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 SQL 与程序代码的耦合,便于统一管理;提供 XML 标签, 支持编写动态 SQL 语句, 并可重用
  • JDBC 相比,减少了 50% 以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接
  • 能够与 Spring 很好的集成
  • 提供映射标签, 支持对象与数据库的 ORM 字段关系映射; 提供对象关系映射标签, 支持对象关系组件维护

MyBatisHibernate 有哪些不同

  • MyBatisHibernate 不同,MyBatis 是一个半自动的 ORM 框架,因为 MyBatis 需要程序员自己编写 SQL 语句,而 Hibernate 是一个全自动的 ORM 框架
  • MyBatis 无法做到数据库无关性,不同的数据库需要不同的 SQL 语句,数据库移植性较差;可编写原生态 SQL,可以严格控制 SQL执行性能,灵活度高
  • Hibernate 对象/关系映射能力强, 数据库无关性好,数据库移植性很好

MyBatis 四大核心对象

SqlSessionFactoryBuilder

这个类是用来创建 SqlSessionFactory 的,它可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。 你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但是最好还是不要让其一直存在,以保证所有的 XML 解析资源可以被释放给更重要的事情

SqlSessionFactory

SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码坏味道(bad smell)。因此 SqlSessionFactory 的最佳作用域是应用作用域。有很多方法可以做到,常见的就是使用单例模式来创建

SqlSessionFactory 接口源码

public interface SqlSessionFactory {
   

  	SqlSession openSession();

  	SqlSession openSession(boolean autoCommit);
  	SqlSession openSession(Connection connection);
  	SqlSession openSession(TransactionIsolationLevel level);

  	SqlSession openSession(ExecutorType execType);
  	SqlSession openSession(ExecutorType execType, boolean autoCommit);
  	SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);
  	SqlSession openSession(ExecutorType execType, Connection connection);

	Configuration getConfiguration();
}

SqlSession

每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例是线程不安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。 每次收到 HTTP 请求,就打开一个 SqlSession,当返回一个响应时,就关闭它。 这个关闭操作是很重要的,你应该把这个关闭操作放到 finally 块中以确保每次都能执行关闭

public interface SqlSession extends Closeable {
   

  	<T> T selectOne(String statement);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值