FluentMybatis Where语法(一) | FluentMybatis实践(2)

简介: FluentMybatis Where语法(一) | FluentMybatis实践

Exist与In子查询

下面测试一下exist以及in,并且添加子查询的情况。exist会使用两种写法一种为直接写sql语句,另一种为使用lamdas表达式方式。

接口代码添加

  /**
   * 测试exist
   *
   * @return list
   */
  List<TestFluentMybatisEntity> query5();
  /**
   * 测试exist lamdas
   *
   * @return list
   */
  List<TestFluentMybatisEntity> query6();
  /**
   * 测试in lamdas
   *
   * @return list
   */
  List<TestFluentMybatisEntity> query7();

实现代码添加

  @Override
  public List<TestFluentMybatisEntity> query5() {
    return testFluentMybatisMapper.listEntity(
        new TestFluentMybatisQuery()
            .where
            .age()
            .ge(30)
            .and
            .exists("select 1 from test_fluent_mybatis where name=?", "李四")
            .end());
  }
  @Override
  public List<TestFluentMybatisEntity> query6() {
    return testFluentMybatisMapper.listEntity(
        new TestFluentMybatisQuery()
            .where
            .age()
            .ge(30)
            .and
            .exists(q -> q.select.name().end().where.name().eq("李四").end())
            .end());
  }
  @Override
  public List<TestFluentMybatisEntity> query7() {
    return testFluentMybatisMapper.listEntity(
        new TestFluentMybatisQuery()
            .where
            .id()
            .in(
                new TestFluentMybatisQuery()
                    .select
                    .apply("id")
                    .end()
                    .where
                    .age()
                    .between(10, 50)
                    .end())
            .end());
  }

控制层代码添加

  @ApiOperation(value = "where-exist语法", notes = "where-exist语法")
  @RequestMapping(value = "/exist", method = RequestMethod.GET)
  @ResponseBody
  public Result<List<TestFluentMybatisEntity>> query5() {
    try {
      return Result.ok(whereService.query5());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }
  @ApiOperation(value = "where-exist1语法", notes = "where-exist1语法")
  @RequestMapping(value = "/exist1", method = RequestMethod.GET)
  @ResponseBody
  public Result<List<TestFluentMybatisEntity>> query6() {
    try {
      return Result.ok(whereService.query6());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }
  @ApiOperation(value = "where-in-sub语法", notes = "where-in-sub语法")
  @RequestMapping(value = "/in-sub", method = RequestMethod.GET)
  @ResponseBody
  public Result<List<TestFluentMybatisEntity>> query7() {
    try {
      return Result.ok(whereService.query7());
    } catch (Exception exception) {
      return Result.error(ErrorCode.BASE_ERROR_CODE.getCode(), exception.getMessage(), null);
    }
  }

验证效果

image.png


image.png

前两个接口返回的结果一致,没啥问题。

相关文章
JAVAEE框架技术之7-myBatis ORM框架入门基础CRUD
JAVAEE框架技术之7-myBatis ORM框架入门基础CRUD
178 0
JAVAEE框架技术之7-myBatis ORM框架入门基础CRUD
MyBatis-Plus高级用法:最优化持久层开发
MyBatis-Plus 通过简化常见的持久层开发任务,提高了开发效率和代码的可维护性。通过合理使用条件构造器、分页插件、逻辑删除和代码生成器等高级功能,可以进一步优化持久层开发,提升系统性能和稳定性。掌握这些高级用法和最佳实践,有助于开发者构建高效、稳定和可扩展的企业级应用。
81 13
如何利用Mybatis-Plus自动生成代码(超详细注解)
如何利用Mybatis-Plus自动生成代码(超详细注解)
2534 1
|
8月前
|
JAVAEE框架技术之8-myBatis ORM框架技术参数和动态SQL语句
JAVAEE框架技术之8-myBatis ORM框架技术参数和动态SQL语句
101 0
JAVAEE框架技术之8-myBatis ORM框架技术参数和动态SQL语句
JAVAEE框架技术之9-myBatis高级查询技术文档
JAVAEE框架技术之9-myBatis高级查询技术文档
137 0
JAVAEE框架技术之9-myBatis高级查询技术文档
干翻Mybatis源码系列之第十篇:Mybatis拦截器基本开发、基本使用和基本细节分析
干翻Mybatis源码系列之第十篇:Mybatis拦截器基本开发、基本使用和基本细节分析
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等