mybatis、mybatisPlus

文章目录

  • 介绍
  • 2.ORM
  • 3.Sql 注入
    • 4.缓存
  • 5.常用注解
    • 5.1 mybatis常用注解
    • 5.2 mybatis plus常用注解
  • 6.mybatis、mybatisPlus的区别
  • mybatis的xml文件

介绍

MyBatis是一款优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

2.ORM

ORM(Object Relation Mapping)对象关系映射,是以对象的形式创建数据库。

1.使用 ORM 的优点
提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。

3.Sql 注入

如何避免SQL注入

使用预处理 PreparedStatement。
使用正则表达式过滤掉字符中的特殊字符。

4.缓存

缓存分为 一级缓存和二级缓存
**一级缓存:**基于 PerpetualCache 的 HashMap 本地缓存,它的声明周期是和 SQLSession 一致的,有多个 SQLSession 或者分布式的环境中数据库操作,可能会出现脏数据。当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认一级缓存是开启的。
**二级缓存:**也是基于 PerpetualCache 的 HashMap 本地缓存,不同在于其存储作用域为 Mapper 级别的,如果多个SQLSession之间需要共享缓存,则需要使用到二级缓存,并且二级缓存可自定义存储源,如 Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现 Serializable 序列化接口(可用来保存对象的状态)。

2.一级缓存与二级缓存的区别
MyBatis中的一级缓存和二级缓存是两种不同的缓存机制,它们有以下区别:

1.一级缓存:

  • 一级缓存是MyBatis默认开启的缓存机制,也称为本地缓存。它是在SqlSession的范围内有效,即同一个SqlSession中执行的SQL语句的结果会被缓存起来,下次相同的SQL语句如果还是在同一个SqlSession中执行,将直接从缓存中获取结果,而不再去查询数据库。
  • 一级缓存是基于对象引用的,缓存的是查询结果对象。当SqlSession执行了更新、插入、删除等操作时,会清空一级缓存,保证数据的一致性。

2.二级缓存:

  • 二级缓存是跨SqlSession的缓存机制,它可以被多个SqlSession共享。多个SqlSession中执行相同的SQL语句,如果开启了二级缓存,则会先从缓存中获取结果,如果缓存中不存在,则去查询数据库,并将查询结果缓存起来,供后续的SqlSession使用。
  • 二级缓存是基于命名空间(Mapper接口)的,每个Mapper接口对应一个独立的二级缓存。不同的Mapper接口之间的查询结果不会互相影响。

5.常用注解

5.1 mybatis常用注解

1.@Mapper: 用于标识Mapper接口,告诉MyBatis该接口是一个映射器接口。
2.@Select: 用于执行查询操作的SQL语句。
3.@Insert: 用于执行插入操作的SQL语句。
4.@Update: 用于执行更新操作的SQL语句。
5.@Delete: 用于执行删除操作的SQL语句。
6.@Results: 用于指定映射结果集与实体类之间的关系。
7.@Result: 用于指定单个属性与列之间的映射关系。
8.@Param: 用于给Mapper方法的参数命名,以便在SQL语句中引用。
9.@ResultMap: 用于引用一个已定义的元素,可以在映射器接口中重用。
10.@Options: 用于配置一些特定的选项,如主键自动生成、批量插入等。
11.@Transactional: 用于标识事务的边界,在方法或类级别上启用事务管理。

5.2 mybatis plus常用注解

1.@TableName: 用于指定实体类对应的数据库表名。
2.@TableField: 用于指定实体类属性与数据库字段的映射关系。
3.@TableId: 用于指定实体类属性作为主键,并指定主键生成策略。
4.@TableLogic: 用于标记逻辑删除字段。
5.@Version: 用于标记乐观锁版本字段。
6.@SqlParser: 用于启用或禁用SQL解析功能,例如实现多租户等。
7.@InsertFill: 用于在插入操作时自动填充指定字段的值。
8.@UpdateFill: 用于在更新操作时自动填充指定字段的值。
9.@SelectKey: 用于配置主键生成策略,类似于MyBatis的元素。
10.@TableResult: 用于定义查询结果集与实体类之间的映射关系。
11.@Entity: 标识实体类。
12.@Mapper: 标识Mapper接口。
13.@Service: 标识Service类。
14.@Controller: 标识Controller类。

6.mybatis、mybatisPlus的区别

1.基础功能:MyBatis是一个功能强大且灵活的持久化框架,它提供了灵活的SQL映射配置和手动编写SQL的能力。而MyBatis Plus是在MyBatis基础之上进行增强的工具,提供了更多的便捷功能和增强特性,如通用的CRUD操作、自动填充、逻辑删除、乐观锁等。
2.编码风格:MyBatis使用传统的XML配置文件和手动编写SQL语句的方式进行数据库操作。开发者需要编写和维护大量的XML配置文件和SQL语句。而MyBatis Plus提倡使用注解和约定大于配置的方式进行数据库操作,减少了XML配置的繁琐和手动编写SQL的工作量。
3.代码生成:MyBatis Plus提供了代码生成器,可以根据数据库表结构自动生成实体类、Mapper接口和XML映射文件,快速生成基础的CRUD操作代码。这在一些简单的增删改查场景下可以极大地提高开发效率。
4.常用功能集成:MyBatis Plus内置了一些常用功能,如分页查询、条件构造器、批量操作等,简化了开发者对这些常用功能的实现。

mybatis的xml文件

绑定某个mapper

1.:配置文件的根元素,用于配置全局属性和设置。
2.:用于配置数据库环境,包括数据源、事务管理器等。
3.:用于指定映射器(Mapper)接口或映射器 XML 文件的位置。
4.:用于定义映射器(Mapper)接口或映射器 XML 文件的具体内容。
5.:定义了结果集的映射规则,用于将查询结果映射到Java对象。
6.