三、DQL编程控制
1. 条件查询方式
- MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
1.1 条件查询
1.1.1 方式一:按条件查询
1.1.2 方式二:lambda格式按条件查询
1.1.3 方式三:lambda格式按条件查询(推荐)
1.2 组合条件
1.2.1 并且关系(and)
1.2.2 或者关系(or)
1.3 NULL值处理
问题导入
如下搜索场景,在多条件查询中,有条件的值为空应该怎么解决?
1.3.1 if语句控制条件追加
1.3.2 条件参数控制
1.3.3 条件参数控制(链式编程)
2. 查询投影-设置【查询字段、分组、分页】
2.1 查询结果包含模型类中部分属性
2.2 查询结果包含模型类中未定义的属性
3. 查询条件设定
问题导入
多条件查询有哪些组合?
- 范围匹配(> 、 = 、between)
- 模糊匹配(like)
- 空判定(null)
- 包含性匹配(in)
- 分组(group)
- 排序(order)
- ……
3.1 查询条件
- 购物设定价格区间、户籍设定年龄区间(le ge匹配 或 between匹配)
3.2 查询API
3.3 练习:MyBatisPlus练习
题目:基于MyBatisPlus_Ex1模块,完成Top5功能的开发。
4. 字段映射与表名映射
问题导入
思考表的字段和实体类的属性不对应,查询会怎么样?
4.1 问题一:表字段与编码属性设计不同步
- 在模型类属性上方,使用**@TableField**属性注解,通过==value==属性,设置当前属性对应的数据库表中的字段关系。
4.2 问题二:编码中添加了数据库中未定义的属性
- 在模型类属性上方,使用 @TableField 注解,通过exist属性,设置属性在数据库表字段中是否存在,默认为true。此属性无法与value合并使用。
4.3 问题三:采用默认查询开放了更多的字段查看权限
- 在模型类属性上方,使用 @TableField 注解,通过 select 属性:设置该属性是否参与查询。此属性与select()映射配置不冲突。
4.4 问题四:表名与编码开发设计不同步
- 在模型类上方,使用**@TableName注解,通过value**属性,设置当前类对应的数据库表名称。