magic-api magic-api
首页
  • 快速入门
  • 基础教程
  • 权限配置
  • 高级应用
  • 开发插件
  • 模块
  • 函数
  • 扩展
  • Gitee (opens new window)
  • Github (opens new window)
  • 演示 (opens new window)
  • SpringBoot配置
  • 编辑器配置
  • 2.x更新日志
  • 1.x更新日志
  • 0.x更新日志
常见问题
💖支持
交流群
首页
  • 快速入门
  • 基础教程
  • 权限配置
  • 高级应用
  • 开发插件
  • 模块
  • 函数
  • 扩展
  • Gitee (opens new window)
  • Github (opens new window)
  • 演示 (opens new window)
  • SpringBoot配置
  • 编辑器配置
  • 2.x更新日志
  • 1.x更新日志
  • 0.x更新日志
常见问题
💖支持
交流群
  • 快速入门

    • 简介
    • 快速开始
    • 请求参数获取
    • 增删改查
    • 单表crud接口
    • 分页
  • 基础教程

    • 界面简介
    • 脚本语法
    • 配置多数据源
    • 统一请求响应
    • 统一异常处理
    • 参数校验
    • 脚本调用Java
    • Java调用接口
    • 异步调用
    • 接口发布
    • Lambda
    • Linq
      • 从1.x迁移
    • 权限配置

      • UI鉴权登录
      • UI操作鉴权
      • 接口鉴权
    • 高级应用

      • 自定义拦截器
      • 自定义SQL拦截器
      • 自定义单表API拦截器
      • 自定义SQL缓存
      • 自定义模块
      • 自定义函数
      • 自定义类型扩展
      • 自定义接口存储
      • 自定义数据库方言
      • 自定义列名转换
      • 自定义脚本语言
    • 插件

      • 插件开发
      • 集群插件
      • 定时任务插件
      • Redis插件
      • Mongo插件
      • ElasticSearch插件
      • Swagger插件
      • Git插件
      • SpringDoc插件
      • nebula插件
    • 指南
    • 基础教程
    mxd
    2022-01-30
    目录

    Linq

    # 基本语法

        select 
            tableAlias.*|[tableAlias.]field[ columnAlias]
            [,tableAlias.field2[ columnAlias2][,…]]
        from expr[,…] tableAlias
        [[left ]join expr tableAlias2 on condition]
        [where condition]
        [group by tableAlias.field[,...]]
        [having condition]
        [order by tableAlias.field[asc|desc][,tableAlias.field[asc|desc]]]
        [limit expr [offset expr]]
    

    # 执行步骤

    • 先从from子句创建虚拟表VT1
    • 处理join,创建虚拟表VT2,筛选符合条件condition的行加入到虚拟表VT2中
    • 处理where 将符合condition的行加入虚拟表VT1中
    • 处理group by 对虚拟表VT1、VT2进行分组操作,将符合having condition的值加入虚拟表VT3中
    • 处理select 从VT3中选择指定的列,加入虚拟表VT4中
    • 处理order by 对虚拟表VT4进行排序
    • 处理limit

    # select子句

    select t.name,sum(t.score) score,t.*
    

    select 中带有聚合函数的,应该有group by语句,否则不会进行聚合处理

    # from子句

    -- 以下三种方式均可(别名是必须的)
    from [{name: 'Gitee'},[name:'Github']] t
    from results t
    from {name:'Gitee'} t
    

    from 跟着的必须是List或者Map

    # join子句

    -- 以下三种方式均可(别名是必须的)
    [left] join [{name: 'Gitee'},[name:'Github']] t1 on t1.name = t.name
    [left] join results t1 on 1 = 1
    [left] join {name:'Gitee'} t1 on t1.name = 'Gitee' and 1=1
    

    # where子句

    -- or 等价于|| and 等价于 && 可以混合使用。
    where t.name = 'Gitee' or t.name = 'Github' and 1=1 && 2=2
    

    # group by子句

    -- 分组操作
    group by t.name, t1.xxx
    

    # having 子句

    -- 筛选分组后的数量大于 1 的
    having count(t.name) > 1
    

    # order by子句

    -- asc可以不写,默认是asc
    order by t.name desc,t.xxx 
    

    # limit 子句

    limit 1 -- 固定取第一项,返回值会是对象,而非List
    -- 跳过(page - 1) * pageSize条取pageSize条
    limit pageSize offset (page - 1) * pageSize
    -- 取前pageSize条
    limit pageSize
    
    上次更新: 2025-05-03 23:57:14
    Lambda
    从1.x迁移

    ← Lambda 从1.x迁移→

    Theme by Vdoing | Copyright © 2020-2025 ssssssss.org | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×