*MyBatis-Plus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提高效率
*开发方式
*基于MyBatis使用MyBatisPlus
*基于Spring使用MyBatisPlus
*基于SpringBoot使用MyBatisPlus
手动添加MP起步依赖
注意事项
由于MP并未被收录到idea的系统内置配置,无法直接选择加入
定义数据接口,继承BaseMapper<User>
直接可CURD
MyBtais特性
*无侵入︰只做增强不做改变,不会对现有工程产生影响
*强大的 CRUD操作:内置通用Mapper,少量配置即可实现单表CRUD操作
*支持Lambda:编写查询条件无需担心字段写错
*支持主键自动生成
*内置分页插件......
标准数据层开发
*标准数据层CRUD功能
*分页功能
1.设置分页拦截器作为Spring管理bean
开启日志
2.执行分页查询
DQL编程控制
*条件查询方式
*MyBatisPlus将书写复杂的SQL进行了封装,使用编程的形式完成查询条件的组合
条件查询----设置查询条件
*格式一:常规格式
*格式二:链式编程格式
*格式三:lambda格式(推荐)
*格式四:lambda(推荐)
条件查询----组合查询条件
*并且(and)
*或者(or)
条件查询----null值处理
*if语句控制条件追加
查询投影
*查询结果包含模型类中部分属性
*查询结果包含模型类中未定义的属性
查询条件
*范围匹配(> 、 = 、 between)
*模糊匹配( like)
*空判定( null)
*包含性匹配( in)
*分组(group )
*排序( order)
*.....
*用户登录(eq匹配)
*购物设定价格区间、户籍设定年龄区间(le ge匹配 或 between匹配)
*查信息,搜索新闻(非全文检索版:like匹配)
*统计报表(分组查询聚合函数)
字段映射与表名映射
*名称:@TableField
*类型:属性注解
*位置:模型类属性定义上方
*作用:设置当前属性对应的数据库表中的字段关系
*范例:
*相关属性
value(默认):设置数据库表字段名称
select:设置属性是否参与查询,此属性与select()映射配置不冲突
*名称:@TableField
*类型:属性注解
*位置:模型类属性定义上方
*作用:设置当前属性对应的数据库表中的字段关系
*范例:
*相关属性:
value:设置数据库表字段名称
exist:设置属性在数据库表字段中是否存在,默认为true。此属性无法与value合并使用
*名称:@TableName
*类型:类注解
*位置:模型类定义上方
*作用:设置当前类对应的数据库表关系
*范例:
*相关属性:
value:设置数据库表名称
DML编程控制
Insert
id生成策略控制
*不同的表应用不同的id生成策略
*日志:自增(1,2,3,4,.......)
*购物订单:特殊规则(FQ23948AK3843)
*外卖单:关联地区日期等信息(10 04 20200314 34 91)
*关系表:可省略id
*......
*名称:@TableId
*类型:属性注解
*位置:模型类中用于表示主键的属性定义上方
*作用:设置当前类中主键属性的生成策略
*范例:
*相关属性
*value:设置数据库主键名称
*type:设置主键属性的生成策略。值参照IdType枚举值
枚举值有以下:
AUTO(0):使用数据库id自增策略控制id生成
NONE(1)∶不设置id生成策略
INPUT(2):用户手工输入id
ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)
ASSIGN_UUID(4): 以UUID生成算法作为id生成策略
Delete
多记录操作
*按照主键删除多条记录
*根据主键查询多条记录
逻辑删除
*删除操作业务问题:业务数据从数据库中丢弃
*逻辑删除:为数据设置是否可用状态字段,删除时设置状态字段为不可用状态,数据保留在数据库中
步骤:
1.数据库表中添加逻辑删除标记字段
2.实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
3.配置逻辑删除字面值(此处是spring全局配置)
执行SQL语句:
执行数据结果:
Update
乐观锁
*业务并发现象带来的问题:如商品秒杀抢购
步骤:
1.数据库中添加锁标记字段
2.实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
3.配置乐观锁拦截器实现锁机制对应的动态SQL语句拼装
4.使用乐观锁机制在修改前必须先获取到对应数据的verion方可正常进行
执行修改前先执行查询语句
执行修改时使用version字段作为乐观锁检查依据
快速开发
代码生成器:
*模板:MyBatisPlus提供
*数据库相关配置:读取数据库获取信息
*开发者自定义配置:手工配置
1.maven导入
2.
3.
4.
5.
6.