最近在做一个代码生成器,所以就需要获取到当前表结构信息,于是搜索了些相关资料并结合mybatis整理了这篇文章,代码相对简单。
1、编写一个Mapper接口 代码如下:
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; import java.util.Map; @Mapper public interface TableDao { @Select("select * from information_schema.TABLES where TABLE_SCHEMA=(select database())") List<Map> listTable(); @Select("select * from information_schema.COLUMNS where TABLE_SCHEMA = (select database()) and TABLE_NAME=#{tableName}") List<Map> listTableColumn(String tableName); }
2、开始使用(确保TableDao能被扫描注入到)
import cn.ffast.core.annotations.ApiDoc; import cn.ffast.core.vo.ServiceRowsResult; import cn.ffast.generator.dao.TableDao; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; @RestController @RequestMapping("/api/generator/table") public class TableController { @Resource TableDao tableDao; @ApiDoc(name = "数据表列表", description = "") @RequestMapping("/list") public ServiceRowsResult list(String id) { ServiceRowsResult result = new ServiceRowsResult(true); result.setPage(tableDao.listTable()); return result; } @ApiDoc(name = "数据表结构", description = "") @RequestMapping("/columns") public ServiceRowsResult info(String tableName) { ServiceRowsResult result = new ServiceRowsResult(true); result.setPage(tableDao.listTableColumn(tableName)); return result; } }
运行结果