说起来倒是挺简单的,就是听着名字感觉挺高大上。逆向工程方式有很多,比如mybatis就提供了一个这样的工具mybatis-genderator,这个我反正是没用过只是听说过,以前在公司都是用公司写好的的工具,最近也是闲的无聊自己动手写了一个。
我的这个工程师基于spring和mybatis写的,有兴趣的加上spring-mvc,加个页面也是不错的。
其实呢使用mybatis做逆向工程很简单就是两个select查询就好了,数据库底子好的童鞋们应该记得一下这两个查询语句的(不记得也没关系,可以学嘛):
1. 查询库中的所有表: select * from information_schema.TABLES where TABLE_SCHEMA=(select database())
2.查询表中的所有字段信息: select * from information_schema.COLUMNS where TABLE_SCHEMA = (select database()) and TABLE_NAME=#{tableName}
对于第一条sql来说查询那个库就连接哪个就行了,不需要传参数。但是第二条sql需要将表名传进去的(这也是无可厚非的)
必不可少的我们是需要数据库的4大连接参数,凡是和数据库挂钩应该都需要这几个玩意(这声明一下我这里是用的MySQL)。其他的配置文件上的事情我就不多说了。今天重点不在这里
接下来简单的将dao、service层贴出来了,和平时的web结构一样很简单。
service层
service实现类
接下来就是今天的重点了。其实也很简单,可能很多人都已经想到了,我们都已经获取到了表字段信息了,那么我们只需要一个文件流不就可以了?(嗯,没错,大兄弟,反正我就是这么写的)
其实我的这个很简单,主要围绕一个stringbuffer进行,先拼接到字符串中,然后用流写到文件中。下边我粘一下我的代码吧。
package com.ml.code.one.codegenerator.util;
import com.ml.code.one.codegenerator.myservice.MyCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@Component
public class CodeGenerator {
@Autowired
private MyCodeService service;
public void codeGenerator(String tableName,String path){
List
这里我用的是boot工程写的,运行的时候我选择用boot自带的test工具运行就ok了(别忘了在启动类上加上dao层的包扫描呦)
到这里呢这个简单的逆向工程就结束了,这个可以直接生成到你指定文件下,顺带连Mapper.xml也生成了的。大佬勿喷。
有需要源码的可以到以下网盘获取,(网盘中的也只是一部分,只是逆向工程部分,其他的需要你们自行补充,应该是不难的)
链接:https://pan.baidu.com/s/1KW7h9vro2U199hsL85Q38w
提取码:obpf