Mybatis成为Java互联网时代首选持久框架的缘由

持久层能够将业务数据存储到磁盘,具有长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其余状况下,从新开启系统仍然能够读取这些数据。通常执行持久任务的都是数据库系统。持久层可使用巨大的磁盘空间,也比较廉价,它的肯定就是比较慢。java

Mybatis成为java互联网时代首选的持久框架

缘由:sql

1. 不屏蔽SQL ,意味着能够更精确地定位sql语句,能够对其进行优化和改造,这有利于互联网系统性能的提升,符合互联网须要性能优化的特色。数据库

2. 提供强大、灵活的映射机制,方便java开发者使用。提供动态的sql的功能,容许咱们根据不一样条件组装sql,这个功能远比其余工具或java编码的可读性和可维护性高的多,知足各类应用系统的同时也知足了需求常常变化的互联网应用的要求。编程

3. 在mybatis中,提供使用了Mapper接口编程,只要一个接口和一个XML就能建立映射器,进一步简化咱们的工做,使得不少框架API在mybatis中消失,开发者更集中于业务逻辑。缓存


mybatis核心组件


  • SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式。
  • SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。
  • SqlSession(会话),一个既能够发送SQL执行返回结果,也能够获取Mapper的接口。在现有技术中,通常咱们会让其在业务逻辑代码中“消失”,而使用的是 MyBatis 提供的 SQL Mapper 接口编程技术,他能提升代码的可读性和可维护性。
  • SQL Mapper(映射器):Mybatis新设计存在的组件,它由一个java接口和XML文件(或注解)构成,须要给出对应的SQL和映射规则。它负责Sql去执行,并返回结果。
Mybatis成为Java互联网时代首选持久框架的缘由

 


SqlSession

在 Mybatis 中有两个实现类,DefaultSqlSession 和 SqlSessionManager。性能优化

DefaultSqlSession是单线程使用的session

SqlSessionManager是多线程使用的。mybatis

做用:多线程

SqlSession的做用相似于一个JDBC中的 Connection对象,表明着一个链接资源的启用。app

  1. 获取Mapper接口。
  2. 发送SQL给数据库。
  3. 控制数据库事务。

一、建立 SqlSession

SqlSession sqlsession=SqlSessionFactory.openSession();
1

二、SqlSession控制数据库事务

//定义SqlSession
SqlSession sqlsession=null;
try{
//打开SqlSession会话
sqlsession=SqlSessionFactory.openSession();
//some code ...
sqlsession.commit();//提交事务
}catch(Exception e){
sqlsession.rollback();
}finally{
//在finally语句中确保资源被顺利关闭
if(SqlSession!=null)
sqlsession.close();
}

映射器

其有一个接口和对应的 xml 文件( 或注解 )组成。

它能够配置以下内容:

  • 描述映射规则
  • 提供SQL语句,并能够配置SQL参数类型、返回类型、缓存刷新等信息。
  • 配置缓存
  • 提供动态SQL

映射器的主要做用就是将 sql 查询到的结果映射为一个 POJO,或者将 POJO的数据插入到数据库中,并定义一些关于缓存等重要内容

定义一个角色POJO

public class Role{
private Long id;
private String roleName;
private String note;
/*setter and getter*/
}

欢迎你们留言关注~转发支持一波~

相关文章
相关标签/搜索