若依代码生成器-Domain代码生成篇(一)

简介: 若依代码生成器-Domain代码生成篇(一)

若依代码生成器的前一段代码的阅读,我们了解了若依代码生成器的一些逻辑,包括通过数据库的information_schema. TABLES查询表信息,以及information_schema. COLUMNS查询指定表的列信息,将其转换到表gen_table与gen_table_column中的数据行,以便后续查询与代码转换。


今天我们继续来看若依系统中是如何自动生成domain代码的。


在系统菜单“系统工具”->"代码生成"中以及可以看到我们导入的表my_user,如下图所示:

这一行右侧有5个按钮,分别是预览、编辑、删除、同步、生成代码。


预览


我们点击“预览”,在弹出窗口中可以看到可以预览生成的代码包括:domain.java, mapper.java, service.java, serviceImpl.java,controller.java, mapper.xml, sql, api.js, index.vue。


其中domain.java, mapper.java, mapper.xml, sql都是与数据库紧密相关的,domain即生成对应数据库表的类,mapper与sql中则包含数据库基本的增删改查。


我们来研究一下domain的生成逻辑。


通过F12调试,发现点击预览的接口为:/tool/gen/preview/?id, 如下图所示:


接口代码经过查找,controller中如下:

/**
     * 预览代码
     */
    @PreAuthorize("@ss.hasPermi('tool:gen:preview')")
    @GetMapping("/preview/{tableId}")
    public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException
    {
        Map<String, String> dataMap = genTableService.previewCode(tableId);
        return AjaxResult.success(dataMap);
    }

通过逐层分解,我们找到其中的一些关键代码:


mybatis的collections一对多查询


看过前两篇文章的小伙伴们知道,gen_table中的一行数据对应gen_table_column中的多行数据,那么mybatis是如何查询这种结果的呢?


这里有一个很好的示例。


其关键代码如下所图所示(源代码位于项目ruoyi-generator/resources/GenTableMapper.xml中)


具体的查询语句如下图所示:

目录
相关文章
|
JavaScript
若依代码生成自带导入功能
若依代码生成自带导入功能
533 0
|
SQL JSON 前端开发
|
4月前
|
SQL JSON 前端开发
中台框架模块开发实践-用 Admin.Core 代码生成器生成通用代码生成器的模块代码
可以看到这里只生成了后端接口,目前 v8.2.0 还不支持前端代码的生成,所以我们还需要手动去将对应版本的 前端代码 下载一份到项目中(只保留),并调整下目录结构,前端代码放到 admin-ui ,后端代码放到 admin-api 运行前后端项目,确认项目运行没问题后开始添加通用代码生成器模块代码。后续任意模块代码都可以参考步骤 1.后端项目引用关系配置 • 将生成的模块代码 ZhonTai.Module.Dev 拷贝到在新项目中 修改库中的引用,默认生成的 ZhonTai.Module.Dev.csproj 引用是相对源码的路径 • 所以需要修改下,直接引用 ZhonTai.Admin 的包
65 0
|
6月前
|
SQL 前端开发 JavaScript
基于若依框架实现前后端分离代码自动生成
基于若依框架实现前后端分离代码自动生成
949 0
|
6月前
|
JavaScript 关系型数据库 Java
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
MyBatisPlus 最新版代码生成器(直接拿来就能用,包含自动生成 Vue 模版)
305 0
|
6月前
如何使用MybatisPlus的代码生成器功能?
如何使用MybatisPlus的代码生成器功能?
|
Java 数据库连接 mybatis
在idea中设置Mybatis核心配置和映射文件模板
在idea中设置Mybatis核心配置和映射文件模板
183 0
|
XML 数据可视化 前端开发
【BackEnd】SpringBoot整合Mybatis实现登录注册功能(适合初学者)
适合新手的SpringBoot整合Mybatis实现登录注册功能,附Gitee工程代码地址
238 0
|
XML 设计模式 API
扩展mybatis-generator自动生成代码项目
通用的新增方法 通用的分页方法 通用的修改方法
158 0