最近用SpringBoot重构一个PHP项目,用JPA操作MySQL数据库,由于要维持原来的表结构,应用中就要把许多表转化为Java。
一般的ORM框架可以很方便地把Java类映射为数据库表,但这里显然是它的逆过程,这个好像没有现成的工具和框架,难道我还要对着表一个字段一个字段地写?
要知道,数据库有上百张表,每个表都有很多字段,一个个写还真得花不少精力,而且手写很难保证每个字段名一一对应,一旦出错读写数据就可能出问题,而且还可能影响其他应用。
SQL实现表转Java
最好的办法当然是用程序实现自动转换了,这里我们用SQL来实现这种转换。
基本思路就是根据表名查询出列名,用concat函数拼接修饰符得到Java对象属性列表:
运行结果就是转换好的Java对象属性了,直接复制到类中即可。
封装成存储过程
把上面SQL语句封装成存储过程,使用的时候更方便
调用MySQL存储过程:
循环遍历所有表
数据库中有很多张表,如果我们不想一次次输入表名,通过循环遍历可以一次性得到所有结果。
先查出数据库中所有表名:
然后把结果集通过游标和while循环遍历所有表:
最后,此方法除了可以得到Java类,理论上稍作修改也可以生成Python、PHP、go以及Protobuf 的DSL等多种语言代码。
本文SQL源码:
https://github.com/yunTerry/SQL2Java
领取专属 10元无门槛券
私享最新 技术干货