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