`

java通过数据库表名自动生成实体类

    博客分类:
  • j2se
 
阅读更多

//生产类

 

package com.yangtb.creatclass;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ParameterMetaData;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 类:创建实体
 * 通过表名,创建一个实体
 * @author Yang 杨天兵
 *时间:20090409
 */
public class CreatClass extends Sql2000 {
 
 //包名
 String strpackage ="";
 // 数据库表名
 String tableName="";
 
 StringBuffer sb = new StringBuffer();
 Connection con = null;
 
 ResultSet res = null;
 ResultSetMetaData rsmd =null;
 
 public String getTableName() {
  return tableName;
 }

 public void setTableName(String tableName) {
  this.tableName = tableName;
 }
 
 public String getStrpackage() {
  return strpackage;
 }

 public void setStrpackage(String strpackage) {
  this.strpackage = strpackage;
 }

 public void execute() throws   IOException{
  con = getCoonnection();
  String strsql="select * from "+tableName;
  Statement st;
  try {
   
   st = con.createStatement();
   
    res = st.executeQuery(strsql);
   
    rsmd = res.getMetaData();
   String newstrpack = "";
   newstrpack = strpackage.replace(".", "/");
   System.out.println(newstrpack);
   //类名
   String className = tableName.substring(0, 1).toUpperCase()+tableName.substring(1);
   //创建这个类文件strpackage
   File file = new File("src"+"/"+newstrpack+"/"+className+".java");
   sb.append("package "+strpackage+";/n");
   sb.append("");
   sb.append("/*/n *");
   sb.append("这是一个类:/n *@author yangtianb/n *//n");
   sb.append("public class "+className+" {");
   
   sb.append("/n");
   for(int i=1;i<rsmd.getColumnCount();i++){
    String type = typename(rsmd.getColumnTypeName(i));
    //打印属性
    sb.append("/tprivate/t");
    sb.append(type+"/t");
    sb.append(rsmd.getColumnName(i)+";");
    sb.append("/n");
    //打印get方法
    sb.append("/t//get方法/n");
    sb.append("/tpublic/t"+type+"/tget"+rsmd.getColumnName(i)+"(){/n");
    sb.append("/t/treturn "+rsmd.getColumnName(i)+";/n/t/n");
    sb.append("}/n");
    //打印set方法
    sb.append("/t//set方法/n");
    //
    sb.append("/tpublic/t"+type+"/tset"+rsmd.getColumnName(i)+"("+type+"/t"+rsmd.getColumnName(i)+")"+"{/n");
    sb.append("/treturn/tthis."+rsmd.getColumnName(i)+"/t = "+rsmd.getColumnName(i)+";/n");
    sb.append("}/n");
   }
   sb.append("}");
   String strsb = sb.toString();
    //创建一个FileWriter对象
   FileWriter fw = new FileWriter(file);
   //创建一个BufferedWriter对象
   BufferedWriter bw = new BufferedWriter(fw);
   bw.write(strsb);
   bw.newLine();
  //关闭文件流
   bw.flush();
   fw.close();
 
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
   //关闭数据库连接
   closeResultSet(res);
   closeConneciton(con);
  }
  
  System.out.println(sb);
 }
 
 public String typename(String typename){
  
  String tystr=null;
  if(typename.equals("varchar")){
   tystr="String";
  }
  if(typename.equals("int")){
   tystr="int";
  }
  else{
   tystr="Object";
  }
  return tystr;
 }
 
 
}

 

在上面工程中的类,以后在其他工程中导入这个类,在写入xml传入参数就能得到相应数据库表名的实体

 

//build.xml

 

<?xml version="1.0"?>

<project name="project" default="default">
 
    <target name="default" depends="depends" description="--> description">
        <taskdef name="test" classname="com.yangtb.creatclass.CreatClass"></taskdef>
     <test tableName="Bloginfo" strpackage="entity"></test>
    </target>
    <target name="depends">
    </target>
</project>

 

记得导入

分享到:
评论

相关推荐

    利用JAVA反射,读取数据库表名,自动生成对应实体类的操作

    主要介绍了利用JAVA反射,读取数据库表名,自动生成对应实体类的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    JAVA SQLite 自动生成实体类 源码

    实现功能: 1.根据SQLite数据库文件,生成java实体类 可用于使用了SQLite数据的 android 或 Java项目.

    根据数据库自动生成实体类

    1.打开控制台,net start mysql 2.java Table2Class 数据库名 表名 操作方式 3.java:代表生成实体类,生成到桌面上 insert:插入 update:修改

    MySQL表自动生成Java实体类

    配置好数据库连接字符串和输出路径,自动把MySQL数据表生成相应的Java实体类。附上数据库。来源是参考别人的代码,有添加了自动获取表名的功能,不需要手动写表名,非常方便。

    自动生成ibatis 实体类文件

    只需要修改数据库名称和表名即可,能更加有效的进行生成实体类

    自动生成java实体类

    只要输入mysql数据库里面的表名运行文件就可以生成相应的实体和sql语句,包含动态sql语句.

    java根据数据库表或视图创建实体

    支持oracle或mysql,输入数据库的连接信息及表名或视图名,自动根据表或视图创建实体类,非常好用的一个小程序,大大节省时间~

    sql server数据库表自动转换成java实体类

    给一个表名,自动生成java实体类,方便实用容易上手。前提,表中至少有一条数据。

    mysql表映射成java实体类

    使用原生jdbc连接mysql数据库,获取所有表名,并映射成java实体类,支持spring注解。摆脱繁琐的实体类编写工作。

    java实体转mysql建表语句

    好用的java实体转MySQL建表语句,非常实用,不好使你找我!

    Generator 代码自动生成工具

    2、自动生成实体Bean 3、自动生成Service、ServiceImpl 4、自动生成Controller。 生成的工具类,自动按表名分包存放. #致谢cy-security。 Generator 代码自动生成工具,是在cy-security项目中,抽取cy-gen插件,在...

    使用MyBatis Generator插件自动生成映射文件

    使用MyBatis Generator插件自动生成映射文件,里面有案例,生成的DAO接口、mappering映射文件,实体类。只要修改表名和数据库名就可以用了

    生成实体类及对应的DAO

    调用NEW GetClass("连接数据库属性文件","实体类保存位置(基于SRC)","DAO保存位置(基于SRC)","表名",boolean);

    DBUtils.java数据库的基础封装操作

    在封装SQL语句之前,我们得知道什么是DAO封装与实体类以及JDBC工具类的封装与连接数据库的具体流程。 封装SQL语句的好处: 封装SQL语句后就可以导包,给其他的工程使用,大大降低开发的强度,减少代码的冗余。...

    实体类生成器(V2)

    .Access数据库表及表结构的访问.Access...9.生成的实体类的各个部分应该容易改动. 10.类名应该加上后缀. 11.保证Java类名首字母大写 保证Java字段名首字母小写. 12.有时系统找不到配置文件. 13.一些异常处理未加完善.

    自动换生成mybatis代码

    1、本工程的目的:实现mybatis的逆向工程,根据数据库的表名,动态生成,实体类、dao层、xml文件 2、本工程的功能: a、以一个简单的普通工程实现mybatis逆向工程。 b、实现java main函数右键运行创建文件。 c、...

    generator.rar

    根据数据库表自动生成实体类,接口和xml.在generator.xml相对应写上连接,表名,需要生成的包名。具体在文件有相应说明。然后cmd,切换到安装目录这个文件下,执行生成语句,也就是'生成语句.txt'文本里面的代码复制...

    MTDEMO.zip

    根据数据库生成实体类demo,设置好数据库账号密码表名,自动根据数据库生成代码的demo。注意这并非完整的项目,只是demo。给你灵感的demo。但是很方便,右键运行,生成,直接输出,不复杂,好用效果刚刚的/够50字了嘛...

    java程序生成器 本软件生成Struts2.1.8,Spring2.5,Hibernate3代码

    生成实体类,Dao层,Biz层,Action,Jsp页面,struts.xml,applicationcontext.xml,hibernate.cfg.xml,web.xml。 支持关系映射。 若想更好的利用此软件加快开发效率,减少成本,请遵循Hibernate规范。 例如: 表必须...

    带图形化的mybatisplus代码生成器

    支持生成实体类、Mapper接口、XML映射文件等多个文件类型; 提供图形化界面,用户友好操作,无需编写繁琐的模板代码; 可自定义生成规则,包括包路径、作者信息、日期格式等; 支持批量生成代码文件,提高开发效率;...

Global site tag (gtag.js) - Google Analytics