• sql-gen:点击生成SQL、RO、VO的工具


    sql-gen仓库地址:码云 Github

    1. 概述

    sql-gen是一个用于提高后端接口开发效率的小工具,主要有如下功能:

    1. 生成连表SQL语句
    2. 根据WHERE条件来生成封装查询条件的实体类(RO)
    3. 根据SELECT列来生成封装查询结果的实体类(VO)

    sql-gen主要有如下特点:

    1. 自动生成表的别名(相关接口:TableAliasGenerator
    2. 自动推断主表和从表的连接条件,即ON语句(相关接口:JoinColumnDeducer
    3. 自动生成列的别名,解决SELECT和WHERE列中的名称重复问题(相关接口:ColumnAliasGenerator

    2. 演示

    2.1. 数据库准备

    数据库中总共有5张表,如下:

    1. sys_class:班级表
    2. sys_grade:年级表
    3. sys_user:用户表,用于存放学生和家长
    4. sys_user_class_rel:学生和班级的关联关系表
    5. sys_parent_child_rel:学生和家长的关联关系表

    tables.png


    sys_user表和sys_parent_child_rel表的具体内容如下:

    1. 总共有4个用户
    2. 小明妈妈是小明的家长

    table1.png


    另外3张表的具体内容如下:

    1. 一年级的id为1
    2. 一年级下有一班和二班,其id分别为1112
    3. 小明和小红在一班,小刚在二班

    table2.png

    2.2. 连表查询(一)

    查询id为1的用户(即小明)的学生信息,包括用户信息、班级信息和年级信息

    1. 此时需要连接sys_user、sys_user_class_rel、sys_class和sys_grade表
    2. 并且要以sys_user表的user_id列作为查询条件

    join1.gif

    可以看出,sql-gen默认会将主表和从表中名称相同的列作为连接的条件

    2.3. 连表查询(二)

    查询id为1的用户(即小明)及其家长的信息

    1. 此时需要连接sys_user、sys_parent_child_rel、sys_user表
    2. sys_user表出现了两次,第一次是作为学生表,第二次是作为家长表
    3. 然后以学生表的user_id列作为查询条件即可

    join2.gif

    可以看出,sql-gen还支持child.user_id=xxx.child_user_id形式的连接条件

    2.4. 聚合查询

    查询出每个班级中,学生id的平均值、学生名字的最大值和学生人数

    1. 此时需要连接sys_user、sys_user_class_rel、sys_class表
    2. 并且,需要将sys_class表的class_id列作为GROUP BY列
    3. 然后对sys_user表的user_id列进行AVG查询、user_name列进行MAX查询、gender列进行COUNT查询即可
    4. CN、MA、MI、AV、SU分别代表COUNT、MAX、MIN、AVG、SUM

    在这里插入图片描述

  • 相关阅读:
    k8s Metallb簡單入門示例
    算法-有效括号
    一个超强的机器学习库
    【自然语言处理】【文本生成】使用Transformers中的BART进行文本摘要
    双向链表的实现(增删查改)——最好理解的链表
    开关电源环路稳定性分析(03)-开环电源
    小程序中如何设置所服务地区的时区
    做点实事吧。
    C++的8个基础语法
    238-h148 排序链表
  • 原文地址:https://blog.csdn.net/Night_DW/article/details/132691368