MyBatis常用技术以及基本概念的了解

简介

  1. MyBatis是Apache的一个开源项目iBatis,  iBatis3.以后正式更名为MyBatis
  2. MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  3. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  4. MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO映射成数据库中的记录

运行原理

Mybatis三大核心API,SqlSessionFactoryBuilder根据mybatis全局配置文件创建SqlSessionFactory,SqlSessionFactory是每一个Mybatis程序的核心,它负责创建SqlSession,SqlSession里面包含了所有执行sql操作的方法,用于执行已经映射的sql语句。其大致原理如下图所示

sqlSession会生成一个执行器,执行器再通过生成一些列处理器来完成sql的预处理,参数的装载以及最终结果的输出,如下图所示

参数的传递

动态SQL

sql语句的主体结构在编译阶段还没有确定只有等到运行时才确定的sql语句就称之为动态sql,而在编译阶段就已经确定主体结构的sql语句称之为静态sql.举个例子说明一下:
        String sql = select * from demo_user where id=1(静态sql)
        String sql = select * from demo_user where id=? and name=?(静态sql)
回想一下我们平常经常要做的查询操作,是不是经常有这样的情况,就是当没有传入查询条件的时候,我们希望查所有,而传入了查询条件时,我们则希望返回按查询条件的到的结果,现在我们用sql来表示一下的这两种情况
        没有传入查询条件时:select * from demo_user
        传入一个查询条件时:select * from demo_user where id=?
        传入多个查询条件时:select * from demo_user where id=? name=?
也就是说在编译阶段,系统并无法确定这条sql到底是什么样的,只有在运行的时候根据用户传参情况才能确定,那么我们称这样的sql为动态sql,而系统在编译阶段无法确定sql是什么样的叫坐sql语句的主题结构不确定

Mybatis为我们提供了一些列标签来帮助我们完成动态SQL的创建,极大的简化来我们拼接SQL的工作

if:根据条件查询时,用来判断参数,添加适当的条件
where:配合if标签使用,可以动态添加相关条件  
set:用于更新一条数据时使用,也要配合if
choose:相当于java里面的case,满足一个条件即可
trim:格式化标记,可以完成set或者是where标记的功能
sql片段:sql+include,当需要复用的sql片段可以直接写在<sql>标签内,在语句上引用sql片段用<include>标签
foreach:主要用于循环迭代

缓存机制

简介

  • MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率
  • MyBatis系统中默认定义了两种缓存级别,分别是一级缓存和二级缓存
  • 默认情况下,只有一级缓存(SqlSession级别的缓存,也称为本地缓存)开启
  • 二级缓存需要手动开启和配置,他是基于namespace级别的缓存。

一级缓存的失效的几种情况

  1. 不同的SqlSession对应不同的一级缓存
  2. 同一个SqlSession但是查询条件不同
  3. 同一个SqlSession两次查询期间执行了任何一次增删改操作
  4. 同一个SqlSession两次查询期间手动清空了缓存

二级缓存的使用方式

  • 全局配置文件中开启二级缓存<setting name="cacheEnabled" value="true"/>
  • 需要使用二级缓存的映射文件处使用cache配置缓存<cache />
  • 注意:POJO需要实现Serializable接口

缓存的相关属性设置

  1. 全局setting的cacheEnable:配置二级缓存的开关,一级缓存一直是打开的。
  2. select标签的useCache属性:配置这个select是否使用二级缓存。一级缓存一直是使用的
  3. sql标签的flushCache属性:增删改默认flushCache=true。sql执行以后,会同时清空一级和二级缓存。查询默认 flushCache=false。
  4. sqlSession.clearCache():只是用来清除一级缓存。

每一个新的SqlSession每一次执行SQL时,都要经历如下过程

值得注意的是Mybatis为了提高扩展性,定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存。EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,可以作为第三方缓存被整合进Mybatis.

逆向工程

MyBatis Generator: 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及bean类。支持基本的增删改查,以及QBC风格的条件查询。但是表连接、存储过程等这些复杂sql的定义需要我们手工编写,具体实现不多赘述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值