网站首页 > 教程文章 正文
Mybatis-Plus缺省是不带多表关联功能,多表关联需要作用mapper.xml写SQL语句,或都在domain的mapper对象下使用@select注解写SQL语句,用后种方法根据自己的需要,花了一天时间学习研究,做了自己的第一个带查询条件的多表关联SQL,特此记录:
一、功能说明
当前有两个表,第一表是景区基本信息,第二个表是景区的文档记录表,第二个表只记录了景区ID代码,查管理第二个表时,需要使用第一个表的信息如景区名称,景区所在行政区划的编码,并要根据表一的景区名称,区划编码,表二的文件代码、文件主题,景区编码进行查询。
二、实现方法
1、编写VO对象
增加了个VO对象,扩展表二对象,同时需要将使用表一的字段添加上,形成一个完整的View对象,且续参数传递,查询操作对使用这个VO对象。
@Data
public class MapScenicFileVO extends MapScenicFile {
private String scenicName;
private String scenicAdcode;
}
2、mapper对象扩展函数
添加表联合功能,使用@select注解方式添加,这个表是采用join进行联合,以便后面传递wrapper查询条件组合。使用where子句联合,后面传递参数时又会产生where子句,导致查询错误。
注意${ew.customSqlSegment}是传递自定义条件到SQL工厂。
/**
* 景区文件联合景区名称查询
*
* @param wrapper 翻页对象,可以作为 xml 参数直接使用,传递参数 Page 即自动分页
* @return 列表
*/
@Select("SELECT map_scenic_file.*,map_scenic.`name` as `scenic_name`,map_scenic.`adcode` as `scenic_adcode` FROM map_scenic_file left join map_scenic on map_scenic_file.scenic_id=map_scenic.id ${ew.customSqlSegment}")
List<MapScenicFileVO> selectScenicFile(@Param(Constants.WRAPPER) Wrapper wrapper);
3、构建执行方法
在服务层执行函数中,根据需要构建组合查询的QuerWrapper,注意Long和String空判断方式不一样。
public List<MapScenicFileVO> selectScenicFileList(MapScenicFileVO scenicFile) {
QueryWrapper<MapScenicFileVO> scenicFileQueryWrapper = new QueryWrapper<>();
//构造查询条,按文件ID,景区ID,景区名称,文件主题构建查询条件
if (scenicFile.getId() !=null ) {
scenicFileQueryWrapper.eq("map_scenic_file.id",scenicFile.getId());
}
if (scenicFile.getScenicId() !=null ) {
scenicFileQueryWrapper.eq("map_scenic_file.scenic_id",scenicFile.getScenicId());
}
if (StringUtils.isNotEmpty(scenicFile.getScenicName())) {
scenicFileQueryWrapper.like("map_scenic.name",scenicFile.getScenicName());
}
if (StringUtils.isNotEmpty(scenicFile.getSubject())) {
scenicFileQueryWrapper.like("map_scenic_file.subject",scenicFile.getSubject());
}
return baseMapper.selectScenicFile(scenicFileQueryWrapper);
}
4、对应的Service接口,Controller统一改为使用VO对象即可,分页方法我是采用pagahelper,下次再研究改为mybatis-plus的分而方法
三、前端
前端调用没什么区别一样,注意一下VO对象的名称,两个表联合有些名称已用AS改过了,
猜你喜欢
- 2024-12-25 mybatis-plus-join编码实现Join联表查询,真香!
- 2024-12-25 SpringBoot咋使用PageHelper实现数据分页?
- 2024-12-25 MyBatis-Plus中如何使用ResultMap
- 2024-12-25 通过Mybatis Plus实现代码生成器,常见接口实现讲解
- 2024-12-25 SpringBoot集成mybatis-plus springboot集成mybatisplus的配置
- 2024-12-25 MyBatis-Plus码之重器 lambda 表达式使用指南,开发效率瞬间提升80%
- 2024-12-25 MyBatis Plus—CRUD 接口 mybatis plus typehandler
- 2024-12-25 聊聊关于Mybatis分页操作PageHelper及实现原理?
- 2024-12-25 Springboot+MybatisPlus实现用户CRUD操作(后端实现)
- 2024-12-25 MybatisPlus方法详细使用,实现无SQL式开发
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)