ORM框架体系
Mybatis中关系的映射
Mybatis-PLUS
Mybatis-PLUS(MP)就是Mybatis的增强工具======>简化开发,提高效率
特性:
无侵入
低损耗
内置分页插件
支持多个数据库等
原理
扫描实体类,拿到对应的实体名作为表名,拿到所有的字段名作为表中的列名
Mybatis和MP对比
Mybatis:
-
优点
SQL语句自由控制,更加灵活
SQL与业务代码分离,易于维护
提供动态SQL语句
-
缺点
简单的CRUD也需要提供对应的SQL语句
必须维护大量的xml文件
自身功能有限,拓展需要依赖第三方插件
MP
- 可以提供无SQL的CRUD操作
- 内置代码生成器,分页插件,性能分析插件等等
- 提供丰富的条件构造器(UpdateWrapper)快速进行无SQL开发
MP的使用准备和Mybatis基本没有差距
ORM (Object-Relational Mapping) 对象关系映射思想,使用面向对象的方式操作数据库
Mybatis常用注解
@TableName 表名的映射
@TableField 字段的映射
@TableId 主键的映射
测试类
SpringBootTest注解会被启动类注解找到
测试类需要使用Junit5的包,否则启动会报错----------import org.junit.jupiter.api.Test;(Junit5)
语句
INSERT语句
INSERT(实体类对象)===>找到实体类对应的表按对应的字段名进行操作
修改:
updateById
- 只修改对象中不为null的值
- 问题1: 当某个属性具有默认值的时候可能会导致覆盖数据
- 问题2: 只能以id作为条件进行修改对象数据
- 好处: 只需要基于id修改,操作方便
update: (QueryWrapper)
- 第一个参数: 要修改的内容,不为 null 的属性会被拼接到 set 命令后
- 第二个参数: update 条件包装器对象
- 好处: 可以自行选择更新的字段,以及使用自定义条件更新
删除语句:
deleteByMap:
- 传入一个Map集合,多条件拼接
- 多条件之间是And拼接
- 只能是等值条件判断
delete(Wrapper wrapper):
- 根据wrapper中的条件删除
deleteBatchIds(id集合)
- 批量删除
查询语句
selectById(ID)
selectBatchIds(Ids)
selectByMap(Map集合)
- 根据Map集合中的键值对作为条件去查询
- 等值查询
- And拼接
selectOne(wrapper对象)
- 根据wrapper中的条件去查找符合的记录
- 只能查询一个结果或者是没有结果,不能多
selectCount(wrapper对象)
- 根据条件查询符合条件的记录条数
selectList(wrapper对象)
- 根据条件查询所有满足条件的记录
- 可以为 null
selectMaps(wrapper对象)
- 根据条件查询所有记录
- 返回的一个Map集合就是一条记录
selectObjs(wrapper对象)
- 根据条件查询所有记录
- 返回对应的实体对象,只返回第一个字段的值
selectPage(分页条件,wrapper对象)=====>配置分页
<E extends IPage<T>> E selectPage(E page, Wrapper<T> queryWrapper);
- 按条件查询所有记录并翻页
- 分页查询
selectMapsPage(分页条件,wrapper对象)
<E extends IPage<Map<String, Object>>> E selectMapsPage(E page, Wrapper<T> queryWrapper);
- 根据条件查询所有记录并翻页