代码生成器
本以为今年时间会比去年多,结果来了又是和去年一样,无限加班。原来的一些计划也是被无限搁置。代码生成器现在也只写了个大概。
工程信息
- springboot
- mybatis
- freemarker
- jdk8
- idea
[ ] 数据库表到前面页面的展示。
[ ] 根据表生成实体类。
[X] 数据库动态切换。
[X] mapper.xml文件生成不完整(目前只生成了结果集、查询列表、查询语句)。
[X] controller层、service层、dao接口(这三层其实生成出来就是一个空类,因为每层都会有一个对通用方法抽取出来的父类,生成的类也只需要继承这个父类就可以了)。
总结
虽然没有写完,但是在这个过程中的思考以及遇到的一些的问题,我觉得都是有意义的。
最大的一个问题:
-
怎么查询出当前数据库中所有的表信息。
- 使用数据库元数据
DatabaseMetaData
来获取。
Connection connection = dataSource.getConnection(); // 获取数据库元数据 DatabaseMetaData databaseMetaData = connection.getMetaData(); ResultSet rs = databaseMetaData.getTables(String catalog, String schemaPattern, String tableNamePattern, String types[])
- 使用sql查询
SELECT TABLE_NAME, CREATE_TIME, UPDATE_TIME, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = #{databasename}
- 使用数据库元数据
解决
第一种方法来获取表信息只需要DataSource
获取数据库连接再拿到数据库元数据就可以,在这里DataSource
可以用spring
注入。但是如何分页是一个问题。因此我没有使用这种方法来查询表信息。
第二种方法通过sql语句来查询分页很好处理,使用limit
也行,PageHelper
也行,我用的PageHelper
。不过这种方法也有一个问题,那就是databasename
,也就是我当前连的是哪个数据库,需要作为参数来做查询。我的做法是在application.yml
文件中进行配置,然后在程序中注入。
application.yml文件:
databasename: 连接的数据库名称
Controller:
@Value("${databasename}")
private String databasename;