栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql根据表名逆向化工程实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql根据表名逆向化工程实现

mysql根据表名逆向化工程实现 一. 获取表的基础信息(表的名称,表的备注,建立日期等)
select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables 
			where table_schema = (select database()) and table_name = #{tableName}
二.获取表的基础信息 (表的字段,类型等)
select column_name columnName, data_type dataType, column_comment columnComment, column_key columnKey, extra from information_schema.columns
 			where table_name = #{tableName} and table_schema = (select database()) order by ordinal_position		
三.根据所得信息渲染实体(自定义各个属性名字生成规则)
public class TableEntity {
	//表的名称
	private String tableName;
	//表的备注
	private String comments;
	//表的主键
	private ColumnEntity pk;
	//表的列名(不包含主键)
	private List columns;
	
	//类名(第一个字母大写),如:sys_user => SysUser
	private String className;
	//类名(第一个字母小写),如:sys_user => sysUser
	private String classname;

	//表的列名(不包含其他日期,只包含建立日期)
	private List columnDates;
	
	public String getTableName() {
		return tableName;
	}
	public void setTableName(String tableName) {
		this.tableName = tableName;
	}
	public String getComments() {
		return comments;
	}
	public void setComments(String comments) {
		this.comments = comments;
	}
	public ColumnEntity getPk() {
		return pk;
	}
	public void setPk(ColumnEntity pk) {
		this.pk = pk;
	}
	public List getColumns() {
		return columns;
	}
	public void setColumns(List columns) {
		this.columns = columns;
	}
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public String getClassname() {
		return classname;
	}
	public void setClassname(String classname) {
		this.classname = classname;
	}

	public List getColumnDates() {
		return columnDates;
	}

	public void setColumnDates(List columnDates) {
		this.columnDates = columnDates;
	}
}
public class ColumnEntity {
	//列名
    private String columnName;
    //列名类型
    private String dataType;
    //列名备注
    private String comments;
    
    //属性名称(第一个字母大写),如:user_name => UserName
    private String attrName;
    //属性名称(第一个字母小写),如:user_name => userName
    private String attrname;
    //属性类型
    private String attrType;
    //auto_increment
    private String extra;
    
	public String getColumnName() {
		return columnName;
	}
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}
	public String getDataType() {
		return dataType;
	}
	public void setDataType(String dataType) {
		this.dataType = dataType;
	}
	public String getComments() {
		return comments;
	}
	public void setComments(String comments) {
		this.comments = comments;
	}
	public String getAttrname() {
		return attrname;
	}
	public void setAttrname(String attrname) {
		this.attrname = attrname;
	}
	public String getAttrName() {
		return attrName;
	}
	public void setAttrName(String attrName) {
		this.attrName = attrName;
	}
	public String getAttrType() {
		return attrType;
	}
	public void setAttrType(String attrType) {
		this.attrType = attrType;
	}
	public String getExtra() {
		return extra;
	}
	public void setExtra(String extra) {
		this.extra = extra;
	}
}
四.运用velocity模板

添加velocity并进行加载和运用,同时用map填充红色自定义字段,生成文件

		//设置velocity资源加载器,zip文件
		Properties prop = new Properties();
		prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");  
		Velocity.init(prop);
		Map map = Maps.newHashMap();
		map.put("tableName", tableEntity.getTableName());
		map.put("comments", tableEntity.getComments());
		map.put("className", tableEntity.getClassName());
		map.put("classname", tableEntity.getClassname());
		// 省略map。需根据自己文档填写map key,value
		VelocityContext context = new VelocityContext(map);
		ZipOutputStream zip = new ZipOutputStream(outputStream);
 		Template tpl = Velocity.getTemplate("template/Service.java.vm", "UTF-8");   //你的velocity文件位置
 		StringWriter sw = new StringWriter();
		tpl.merge(context, sw);
		ZipEntry zipEntry = new ZipEntry("service" + File.separator + tableEntity.getClassName() + "Service.java");  //你的文件生成路径
		zip.putNextEntry(new ZipEntry(zipEntry))
		IOUtils.write(sw.toString(), zip, "UTF-8");
		IOUtils.closeQuietly(sw);
		zip.closeEntry();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号