因为实习公司项目生产需要,带我的师傅希望可以编写一个代码生成器,实现代码自动化生产,即给出数据库及其库中的表,创建 :

1.基于表的pojo(model层)

2.基于mybatis的持久层的接口文件以及接口对应的xml文件

3.创建操纵持久层mapper接口的service

4.创建调用service层的controller。

5.创建基于vue的前端页面(这个没有学过)

刚开始一头雾水,代码自动化生产是什么?如果能够基于数据库表进行代码自动化生产,那还要程序员干嘛,其实细想一下,这难道不应该是思维的一种抽象方式吗?即根据原料(数据库表和模版)进行产品批量化生产,而我要做的就是编写生产工具和模板。新手感觉做这个好难啊,主要还是开发经验少,不能在脑中形成具体的项目概览,这个做多了就有了急不来。在网上搜了一下看到一个相关的介绍,感觉比较靠谱。

 

 

下面是我对源码的一些理解:

主要是创建一个App类,运行里面的main方法,

java后端代码生成框架 java自动生成代码框架_App

java后端代码生成框架 java自动生成代码框架_main方法_02

第一张图片是App.main()方法,第二张是工程架构。

下面介绍main方法用到的相关类的接口,也是熟悉项目的过程。

1.首先创建一个TableDao对象,用来对数据库表进行处理,

2.然后td.loadTables();如下图:获得库中所有表的名字,以及每一个表的所有列的信息再将查到的每一列作为一个Field类的对象,

java后端代码生成框架 java自动生成代码框架_main方法_03

 3.Maps.put(rs.getString(1),loadFields(rs.getString(1))),创建一个map,key为数据库中的表名,value为一个list,存储的是该表的每一个列所对应的field实体;

java后端代码生成框架 java自动生成代码框架_数据库表_04

4. ModelService ms=new ModelServiceImpl();
        DaoService ds=new DaoServiceImpl();
        ServiceService ss=new ServiceServiceImpl();
        ControllerService cs=new ControllerServiceImpl();
        FrontService fs=new FrontServiceImpl();

 

生成相关的业务代码实现类,执行该实现类的构造方法

 ms.createModels();

5.  CreateService cs = CreateServiceImpl.getInstance();

构造单例类,使用该单例里面的相关方法创建指定路径的文件,一个map包含表名,表里面的field类对象,利用指定的模板在创建的指定位置的文件进行写入,用map的value替换模版里的占位符,形成文件。

java后端代码生成框架 java自动生成代码框架_数据库表_05