《Java EE 互联网轻量级框架整合开发——SSM框架和Redis实现》 第3章 认识MyBatis核心组件

3.1持久层的概念和MyBatis的特点

MyBatis最成功的3点:

  • 不屏蔽SQL
    • 可以更为精确地定位SQL语句。可以对齐进行优化和改造,有利于互联网系统性能的提高,符合互联网需要性能优化的特点
  • 提供强大、灵活的映射机制,方便java开发使用
    • 提供动态SQL的功能,运行我们根据不同条件组装SQL,这个功能远比其他工具或者Java编码的可读性和可维护性高很多,满足各种应用系统的同时也满足了需求经常变化的互联网应用的要求
  • 提供使用Mapper的接口编程,只要一个接口和一个XML就能创建映射器,进一步简化工作

3.2准备MyBatis环境

链接
https://github.com/mybatis/mybatis-3/releases
MyBatis工程包及其依赖包
在这里插入图片描述

3.3MyBatis核心组件

  • SqlSessionFactoryBuilder(构造器)
    • 根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式
  • SqlSessionFactory(工厂接口)
    • 生成SqlSession,使用的是工厂模式
  • SqlSession(会话)
    • 既可以发送SQL这些hi行返回结果,也可以获取Mapper的接口
    • 在现有技术中,一般会让其消失,以提高代码的可读性和可维护性
  • SQL Mapper(映射器)
    • 它由一个Java接口和XML文件(或者注解)组成
      在这里插入图片描述

3.4 SqlSessionFactory(工厂接口)

使用MyBatis首先使用配置或者代码去生产SqlSessionFactory
MyBatis提供了构造器SqlSEssionFactoryBuilder

  • 生成SqlSessionFactory的两种方式:
    • 通过读取配置的XML文件(墙裂推荐)
    • 通过Java代码

SqlSessionFactory是一个借口,在MaBatis中存在两个实现类

  • SqlSessionManager
  • DefaultSqlSessionFactory(一般实现方法)

每个基于MyBatis的因公都是以一个SqlSessionFactory的实例为中心的,而SqlSessionFactory唯一的作用就是生产MyBatis的核心接口对象SqlSession,所以其责任唯一

3.4.1 使用XML构建SqlSessionFactory

MyBatis的XML分为两类:

  • 基础配置文件,mybatis-config.xml
  • 映射文件,配置映射关系,SQL,参数等

mybatis-config.xml描述:

  • typeAlias
    • 定义别名,例如Bean
  • environment
    • 元素的东一,可以用来描述数据库
    • transactionManager——配置事务管理器
    • dataSource——配置数据库
    • Mapper——代表引入哪些映射器

有了mybatis-config.xml文件,就可以用一段很简短的代码来生成SqlSessionFactory了

SqlSessionFactory  sqlSessionFactory = null;
String resource = 'mybatis-conflg.xml';
InputStream inputStream;
try {
	inputStream = resources.getResourceAsStrteam(resource);
	SqlSEssionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
	e.printStackTrace();
}

以上代码中,首先读取mybatis-config.xml,然后通过SqlSessionFactoryBuilder的Builder方法去创建SqlSessionFactory

3.4.2 使用代码创建SqlSessionFactory

不推荐,略

3.5 SqlSession

SqlSession是核心接口,作用类似于一个JDBC中的Connection对象,代表着一个连接资源的启用,作用有3个:

  • 获取Mapper接口
  • 发送SQL给数据库
  • 控制数据库事务
    SqlSession控制数据库事务的方法,代码如下:
//定义sqlSession
SqlSession sqlSession = null;
try {
	//打开sqlSession会话
	sqlSession = SqlSessionFactory.openSession();
	sqlSession.commit();		//提交事务
} catch (Exception ex) {
	sqlSession.rollback();		//回滚事务
} finally {
	//在finally语句中确保资源被顺利关闭
	if (sqlSession != null) {
	//不关闭资源,瞬间爆炸
	sqlSession.close();
	}
}

3.6 映射器

映射器是MyBatis中最重要、最复杂的组件
负责配置以下内容:

  • 描述映射规则
  • 提供SQL语句,配置SQL参数类型,返回类型,缓存刷新等信息
  • 配置缓存
  • 提供动态SQL
    映射器的主要作用就是将SQL查询到的结果应设为一个(POJO),或者将POJO的数据插入到数据库中,定义一些关于缓存的重要内容
3.6.1 用XML实现映射器

用XML定义映射器分为两部分:接口和XML
XML内容:

  • mapper
    • namespace对应接口的全限定名
  • select
    • 表明这是一条查询语句
    • id:标识SQL
    • parameterType = ‘long’,传递参数为long型
    • resultType = ‘role’,返回类型为Role
3.6.2 注解实现映射器

注解和XML方式同时定义时,XML方式将覆盖掉注解方式,推荐使用XML方式

3.6.3 SqlSession发送SQL
Role rle = (Role) sqlSession.selectOne("com.ssm.mapper.RoleMapper.getRole", 1L);

也可以

Role role  = (Role) sqlSession.selectOne("getRole", 1L);
3.6.4 用Mapper接口发送SQL
RoleMapper roleMaper = sqlSession.getMapper(RoleMapper.class);
Role role = roleMapper.getRole(1L);
3.6.5 对比两种发送SQL方式

使用Mapper接口变成已成为主流,推荐采用SqlSession获取Mapper的方式

3.7 生命周期

SqlSessionFactoryBuilder

只能存在于创建SqlSessionFactory的方法中,不要让其长期存在

SqlSessionFactory

SqlSessionFactory的生命周期存在于整个Mybatis的应用之中
一般采用单例模式

SqlSesson

存活于一个业务请求中

Mapper

由SqlSession创建,生命周期小于等于SqlSession的生命周期
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网应用的快速发展,Java EE成为当下互联网开发中最为流行的开发语言之一。而在Java EE开发中,轻量级框架整合是必不可少的一部分。其中SSM框架是最先被广泛应用的一种框架,它是由Spring、SpringMVC和MyBatis三个框架整合而成。此外,Spring框架也是Java EE开发中非常重要的一部分,它主要提供了全部企业级应用的核心技术和API,包括依赖注入、控制反转等。 对于如何提高web应用的性能,Redis是一个非常强大的缓存解决方案。它是一种内存数据存储系统,能提供快速读取数据、支持分布式和高可用性等特性。当然,Redis的应用需要和Java EE整合,才能更好地发挥其功能。 最近几年,微服务架构也成为Java EE中非常关注的技术趋势。微服务架构是一种面向服务的架构,它将一个应用程序拆分成若干个服务,这些服务之间通过API方式进行互相通信。微服务架构可以执行部署,提高应用可扩展性,从而更好地满足应用程序的要求和需求。 最后,在Java EE开发中,PDF文档的生成和处理也是一个非常重要的任务。开发人员可以使用PDF框架来生成各种类型的PDF文档,满足企业应用的需求和要求。 总的来说,以上几种Java EE互联网轻量级框架整合开发技术都非常重要,可以提高应用程序的开发效率和可用性,同时也能提高web应用程序在互联网中的性能和可扩展性,提供更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值