【cnipa】一种代码自动生成方法及代码自动生成器

有时候赶鸭子上架做成烤鸭,那么它是一道工艺,我们就需要一个固定的秘方。其实产品项目也是如此,一个项目上线演示前,需要快速研发功能需求,正常的功能实践就可以自动化处理。有时候可以复杂事情简单做,简单的事情自动化做。大多数代码生成器只是实现传统的单表模式,我们代码生成器做了升级,主要表现在一对多表之间,通过拖拽方式可以生成查询语句。这种新的模式理念和以往的固定模板有所不同,编辑模式就好比流程引擎一张我们把关系拟好,就可以生成我们想要的关联sql语句以及mybatsi查询脚本。

流程说明

在这里插入图片描述

功能开发

每个公司都有属于自己的自动化代码生成器,这里我们采用连接数据库自动生成代码,不仅实现:分页查询列表、新增、修改、删除(可选:物理|逻辑)、是否唯一值、实现树查询等模块。
在这里插入图片描述
不断沉淀固定模式,不同项目根据需要进行生成指定类型代码模式。不需要的可以移除,避免每次还要手动移除困扰等等人性化设置
在这里插入图片描述
单表需求是简单,但是一对多表却是常有的需求,所有通过表与表之间主键管理,可以自动生成查询xml语句,这样后续复杂就人工调整即可。
在这里插入图片描述

功能实践

在这里插入图片描述

部分代码

@Slf4j
@Controller
@RequestMapping("/sys/gen")
public class SysGenController extends BaseController {

    @Autowired
    private SysGenService sysGenService;

    /**
     * 列表含分页
     * 
     * @param request
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/list")
    public JSONObject list(QueryListByPage request) {
        int pageNum = request.getPage() > 0 ? request.getPage() : 1;
        int pageSize = request.getLimit() > 0 ? request.getLimit() : 10;
        IPage<QueryListVo> queryListVoPage = sysGenService.queryListVo(pageNum, pageSize, request.getTableName());
        return successRest(queryListVoPage);
    }


    /**
     * 生成代码
     * 
     * @param tables
     * @param moduleName
     * @param prefix
     * @param outDir
     * @return
     */
    @ResponseBody
    @RequestMapping("/code")
    public JSONObject code(String tables, String moduleName, String prefix, String outDir) {
        if (!outDir.endsWith("/")) {
            outDir = outDir + "/";
        }
        sysGenService.genCode(tables, moduleName, prefix, outDir);
        return successRest("代码生成成功,生成路径为:" + outDir);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掘金者说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值