1、MyBatis简介
01、MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解 来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中 的记录。
02、MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移 到了google code,并且改名为MyBatis 。
03、国内环境用MyBatis比较多 ,MyBatisPlus这是MyBatis的再封装
MyBatis用得比较多的原因是,中国的项目需求多变
国外用JPA Hibernate比较多 这两个是偏向于标准的对象映射,基本是看不到SQL的,有点类似于C#的Liq
2、MyBatis的优点:
01、帮助程序猿将数据存入到数据库中
02、方便
03、传统的JDBC代码太复杂了。简化。框架。自动化。
04、简单易学、灵活
05、sql和代码的分离,提高了可维护性
06、提供映射标签,支持对象与数据库的orm字段关系映射
07、提供对象关系映射标签,支持对象关系组建维护
08、提供xml标签,支持编写动态sql。
3、关于MyBatis缓存的分类
01、 一级缓存:同一个 SqlSession 对象, 在参数和 SQL 完全一样的情况下, 只执行一次 SQL 语句 (前提缓存没有过期)
02、 二级缓存:Mybatis的二级缓存是指mapper映射文件。二级缓存的作用域是同一个namespace下 的mapper映射文件内容,多个SqlSession共享。
4、关于一级缓存的注意事项
01、同一个 SqlSession 中, Mybatis 会把执行的方法和参数通过算法生成缓存的键值, 将键值和结果 存放在一个 Map 中, 如果后续的键值一样, 则直接从 Map 中 获取数据;
02、不同的 SqlSession 之间的缓存是相互隔离的;
03、用一个 SqlSession , 可以通过代码或配置在查询前清空缓存;
04、 insert、update、delete 语句会清空缓存。
5、关于MyBatis缓存的使用注意事项
01、由于在更新时会刷新缓存, 因此需要注意使用场合:查询频率很高, 更新频率很低时使用, 即经 常使用 select, 相对较少使用insert, update,delete。
02、缓存是以 namespace 为单位的,不同 namespace 下的操作互不影响。但刷新缓存是刷新整个 namespace 的缓存, 也就是你 insert, update,delete 了一个, 则整个缓存都刷新了。
03、最好在 「只有单表操作」 的表的 namespace 使用缓存, 而且对该表的操作都在这个 namespace 中。 否则可能会出现数据不一致的情况。
6、关于SSM整合导入的包说明
01、导入的spring、springMVC、MyBatis、Junit、json、文件上传、数据库的连接驱动、Java EE、Java web、aop、日志相关的jar包
02、关于这些包的一些说明
7、报错提示为:Type interface com.gx.dao.SysRoleConstructorMapper is not known to the MapperRegistry 即为还没在下图这个地方注册
8、&符号在xml中是有特殊转义的,所以说在xml中&符号需要转义一下,转义格式为&
9、关于下面图片的简述
![在这里插入图片描述](https://img-blog.csdnimg.cn/b76e99765b7143a5abe8630900d5c1bf.png#pic_center)
01、第一个* 代表返回类型
02、com.gx.service… 代表service层的当前目录及其子目录
03、第二个代表所有,而Imp代表所有的impl的后缀
04、第三个*代表所有的方法
05、(…)代表所有的参数
10、单表查询中单个参数和多个参数注意事项:
单个参数时:
@Param 注解可以省略不写
不写 @Param 注解时,形参的名称可以不和Mapper.xml中的 #{} 获取变量名一致。不建议
写 @Param 注解时,注解中的参数名称必须和Mapper.xml中的 #{} 获取变量名一致。
多个参数时:
每个参数前必须添加 @Param 注解
注解中的参数名称必须和Mapper.xml中的 #{} 获取变量名一致。
注解中的参数名称与方法的参数名称可以不一致。