首页 > 其他分享 >MyBatisPlus 注解方式实现多表关联查询

MyBatisPlus 注解方式实现多表关联查询

时间:2023-11-21 17:45:42浏览次数:38  
标签:QueryWrapper MyBatisPlus LocalDateTime wrapper 注解 Date 多表 new page

Mapper写法:

@Select("SELECT * FROM tableA a LEFT JOIN tableB b on a.key = b.key ${ew.customSqlSegment}")
List method1(@Param(Constants.WRAPPER) QueryWrapper wrapper);
IPage method2(Page<> page, @Param(Constants.WRAPPER) QueryWrapper wrapper);

 

需要注意:ew是wrapper定义别名,不能使用其他的替换;
需要注意:用法 ${ew.customSqlSegment} (不需要where标签包裹,切记!);
需要注意:wrapper不能为null,可以用new QueryWrapper<>();

 

entity写法:

    查询model中,如果既有A表参数,又有B表参数,需要在entity中添加字段
    返回结果vo中,和A、B表对应上的字段都会自动赋值

service写法:

    封装wrapper时,column字段最好写明表名。例:wrapper.eq(StringUtils.isNotBlank(“xxx”), “A.column”,“value”);

@Override
    public void getRecord() {

        //返回值为list
        QueryWrapper<PassRecord> wrapper = new QueryWrapper<>();
        wrapper.eq(StringUtils.isNotBlank(""), "user_name","aaa");
        wrapper.eq("p.card_id","44520xxx");
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse("20210611 18:04:00", dateTimeFormatter);
        Date startDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
        LocalDateTime dateTime2 = LocalDateTime.parse("20210615 18:04:00", dateTimeFormatter);
        Date endDate = Date.from(dateTime2.atZone(ZoneId.systemDefault()).toInstant());
        wrapper.between("p.create_time",startDate, endDate);
        List<PassRecord> list = passRecordMapper.getRecordParam(wrapper);
        list.forEach(passRecord -> {
            System.out.println(passRecord.getUserName() +"=="+ passRecord.getWorkPlace());
        });

        //返回page对象
        Page<PassInfoDto> page = new Page<>();
        page.setCurrent(1L);
        page.setSize(2L);
        QueryWrapper<PassRecord> queryWrapper = new QueryWrapper<>();
        List<PassRecord> recordList = passRecordMapper.getRecordPageParam(page, queryWrapper);
        recordList.forEach(record -> {
            System.out.println(record.getUserName() + "" + record.getRecordId());
        });

        IPage<PassRecord> iPage = passRecordMapper.getRecordParamToPage(page, queryWrapper);
        System.out.println(JSON.toJSONString(iPage));
    }

 

标签:QueryWrapper,MyBatisPlus,LocalDateTime,wrapper,注解,Date,多表,new,page
From: https://www.cnblogs.com/Fooo/p/17847154.html

相关文章

  • mybatisplus实现一次多表联查+分页查询
    以书籍整理为例,书籍是一个单独的表,书籍类别是另一个表,通过书籍通过类别的ID可以查询到书籍类别的具体名称,下面分享一下代码://mapperIPage<BookInfo>selectBookPage(IPage<BookInfo>page,@Param(Constants.WRAPPER)QueryWrapper<BookInfo>wrapper); //servicepublic......
  • @注解
    @Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceAutoLog{Stringvalue()default"";}这是我之前做日志的时候自定义了一个autolog注解,其中当只有一个value属性时,value为特殊属性,可以被省略不写下面两种方法都是正确的,写......
  • JAVA注解(韩顺平)
    第一部分:三个基本的注解Override用于检查方法重写的语法是否正确Override的结构(ctrl+b可以查看该注解的结构)Deprecatedpackagecom.annotation;//测试@Deprecataed注解publicclassDeprecated{publicstaticvoidmain(String[]args){Dd=ne......
  • 14、SpringMVC之注解配置
    14.1、概述在实际工作中,一般使用配置类和注解代替web.xml和SpringMVC配置文件的功能;在Servlet3.0环境中,容器会在类路径中查找实现了javax.servlet.ServletContainerInitializer接口的类,如果找到了的话,就会用它来配置Servlet容器;Spring提供了ServletContainerIni......
  • java-Junit 注解 枚举
    第15章_Junit_注解_枚举Junit单元测试引入【1】软件测试的目的:软件测试的目的是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 【2】测试分类:(1)黑盒测试:软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是......
  • Spring Boot 自定义注解,AOP 切面统一打印出入参请求日志
    今天主要说说如何通过自定义注解的方式,在SpringBoot中来实现AOP切面统一打印出入参日志。小伙伴们可以收藏一波。废话不多说,进入正题!一、先看看切面日志输出效果在看看实现方法之前,我们先看下切面日志输出效果咋样:从上图中可以看到,每个对于每个请求,开始与结束一目了然,并且打印......
  • mybatisplus关于驼峰命名法与下划线的映射
    今天遇到一个很坑的事情,我在测试之前的案例的时候我有一个字段的名字是typeId,我调试之后发现插入出现了错误。开启sql日志之后我发现mybatisplus自动把我的typeId改成type_id了。无奈之下我只能把数据库、实体类的驼峰命名法改成下划线###SQL:SELECTid,name,description,t......
  • 多表查询(跨表查询) 子查询 链表查询 正反向查询概念 聚合查询 分组查询 F查询和Q查询
    昨日内容回顾模板之变量所有的数据类型都可以在模板中使用render(request,'index.html',context={''})render(request,'index.html',context=locals())"""在模板中使用变量的时候,用的是字典的key值,key值value值一般保持一致"""模板之过滤器类似于函数,函数才可以传递参......
  • @WebServiceClient wsdlLocation 动态给注解内容参数赋值
    动态给注解内容参数赋值@WebServiceClient(name="IXxxService",targetNamespace="http://xxx.xxx.xxx.com",wsdlLocation="${WSDL_URL}")publicclassIXxxServiceextendsService{ //静态变量在静态代码块加载后加载,且注解也在之后加载,完成动态注入修改注解里的参......
  • 枚举和注解
    枚举和注解枚举是一组常量集合可以理解:枚举属于一种特殊的类,里面直包含一组有限的特定的对象自定义类实现枚举使用enum关键字实现枚举自定义枚举实现不需要提供setXXXX方法,因为枚举对象值通常为只读对枚举对象/属性使用final+static共同修饰,实现底层优化......