你的位置:首页 > Java教程

[Java教程]Hibernate生成实体类


BaseDao

package com.pb.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class BaseDao {  protected Connection conn;  protected PreparedStatement ps;  protected ResultSet rs;  public Connection getConnection() {    String driver = "oracle.jdbc.driver.OracleDriver";    String url = "jdbc:oracle:thin:@localhost:1521:orcl";    String username = "accp";    String password = "accp";    try {      Class.forName(driver);      conn = DriverManager.getConnection(url, username, password);    } catch (ClassNotFoundException e) {      e.printStackTrace();    } catch (SQLException e) {      e.printStackTrace();    }    return conn;  }  public void closeConnection() {    if (rs != null) {      try {        rs.close();      } catch (SQLException e) {        e.printStackTrace();      }    }    if (ps != null) {      try {        ps.close();      } catch (SQLException e) {        e.printStackTrace();      }    }    if (conn != null) {      try {        conn.close();      } catch (SQLException e) {        e.printStackTrace();      }    }  }    public ResultSet executeQuery(String sql,Object [] params){    getConnection();        try {      ps=conn.prepareStatement(sql);    if(params!=null){      for (int i = 0; i < params.length; i++) {                ps.setObject(i+1, params[i]);              }    }    rs=ps.executeQuery();    } catch (SQLException e) {      e.printStackTrace();    }    return rs;  }  public int executeUpdate(String sql,Object [] params){    int updateNum=-1;    getConnection();        try {      ps=conn.prepareStatement(sql);    if(params!=null){      for (int i = 0; i < params.length; i++) {                ps.setObject(i+1, params[i]);              }    }    updateNum=ps.executeUpdate();    } catch (SQLException e) {      e.printStackTrace();    }finally{      this.closeConnection();    }    return updateNum;  }  }

tableDao仍然是Dao层

package com.pb.dao;import java.util.List;import java.util.Map;public interface TableDao {    public List<String> getTableName();    public Map<String, String> getCols(String tableName);}

tableDaoImpl实现数据访问

package com.pb.dao.impl;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import com.pb.dao.BaseDao;import com.pb.dao.TableDao;public class TableDaoImpl extends BaseDao implements TableDao { //当前用户下的所有表名  @Override  public List<String> getTableName() {    List<String> tableNameList = null;    try {      String sql = "select * from user_tables";      Object[] params = {};      ResultSet rs = super.executeQuery(sql, params);      if (rs != null) {        tableNameList = new ArrayList<String>();        while (rs.next()) {          tableNameList.add(rs.getString("TABLE_NAME"));                  }      }    } catch (SQLException e) {      e.printStackTrace();    } finally {      super.closeConnection();    }    return tableNameList;  }  //指定表名的所有字段  @Override  public Map<String, String> getCols(String tableName) {    Map<String, String> map=null;    try {    String sql="select * from user_tab_cols where table_name=?";    Object [] params={tableName};    ResultSet rs=super.executeQuery(sql, params);    if(rs!=null){      map=new HashMap<String, String>();      while(rs.next()){        map.put(rs.getString("COLUMN_NAME"), rs.getString("DATA_TYPE"));      }    }    } catch (SQLException e) {      e.printStackTrace();    } finally {      super.closeConnection();    }    return map;  }}

业务层biz

TableService接口
package com.pb.biz;import java.util.List;import java.util.Map;public interface TableService {    public List<String> getTableName();    public Map<String, String> getCols(String tableName);}

TableService接口业务层实现
package com.pb.biz.impl;import java.util.List;import java.util.Map;import com.pb.biz.TableService;import com.pb.dao.TableDao;import com.pb.dao.impl.TableDaoImpl;public class TableServiceImpl implements TableService {  private TableDao tableDao=new TableDaoImpl();  @Override  public List<String> getTableName() {    return tableDao.getTableName();  }  @Override  public Map<String, String> getCols(String tableName) {    return tableDao.getCols(tableName);  }}

测试类

package com.pb.test;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.List;import java.util.Map;import java.util.Scanner;import com.pb.biz.TableService;import com.pb.biz.impl.TableServiceImpl;public class DemoTest {  public static TableService tableService=new TableServiceImpl();  public static Scanner input=new Scanner(System.in);  public static void main(String[] args) {    Map<String, String> map;    //类名    String className=null;        //获取accp用户下的全部表名  List<String> tableNameList=getTableName();  System.out.println("请输入你需要的表名");  String tableName=input.next().toUpperCase();  boolean flag=false;  for (String s : tableNameList) {    if(s.contains(tableName)){      flag=true;          }  }      if(flag==true){    System.out.println("表已经找到表名为"+tableName);    //输出表名并生成类名    className ="public class " + tableName.substring(0,1)+tableName.substring(1).toLowerCase()+" { \n";    //要建立的包名    System.out.println("请输入要建立的包名:");    String pack="package "+input.next()+" ;\n";    //获取表中的字段     map =tableService.getCols(tableName);    //根据表名生成文件名     String filename=tableName.substring(0,1)+tableName.substring(1).toLowerCase()+".java";      //找到表中的字段      map=getTableCols(tableName);      //建立属性字符串      String proerty=getProerty(map);      //无参数构造方法      String con=getconString(tableName);      //get方法      String getter=getMethod(map);      //setter方法      String setter=setMethod(map);      //生成总字符串      String str=pack+className+proerty+con+getter+setter+"}";      //写入文件      File file=new File("d:"+File.separator+filename);      FileOutputStream fos=null;      try {         fos=new FileOutputStream(file);        fos.write(str.getBytes());      } catch (FileNotFoundException e) {        e.printStackTrace();      } catch (IOException e) {        e.printStackTrace();      }finally{        try {          fos.close();        } catch (IOException e) {          e.printStackTrace();        }      }  }else{    System.out.println("没有这个表"+tableName);  }    }  //当前用户下所有表名  public static List<String> getTableName(){    return tableService.getTableName();  }  //字段  public static Map<String,String> getTableCols(String tableName){    return tableService.getCols(tableName);  }  //无参数构造方法    public static String getconString(String tableName){      String conString=" \n // 无参数构造方法\n public "+tableName.substring(0,1)+tableName.substring(1).toLowerCase()+"(){\n\n}\n";      return conString;    }      //将字段转为字符串属性  public static String getProerty(Map<String,String> map){    String str="// Fields \n";    for(String s:map.keySet()){      if(map.get(s).equals("NUMBER")){        str+=" \n private " +"int "+s.toLowerCase()+";\n";      }else if(map.get(s).equals("VARCHAR2")){        str+=" \n private " +"String "+s.toLowerCase()+";\n";      }else if(map.get(s).equals("DATE")){        str+=" \n private " +"Date "+s.toLowerCase()+";\n";      }else{        str+=" \n private " +map.get(s)+" "+s.toLowerCase()+";\n";      }    }    return str;  }  //get方法  //将字段转为get方法    public static String getMethod(Map<String,String> map){      String str="//getter方法\n";      for(String s:map.keySet()){        if(map.get(s).equals("NUMBER")){          str+=" \n public " +"int "+"get"+s.substring(0,1)+s.substring(1).toLowerCase()+"(){\n return this."+s.toLowerCase()+"; \n}";        }else if(map.get(s).equals("VARCHAR2")){          str+=" \n public " +"String "+"get"+s.substring(0,1)+s.substring(1).toLowerCase()+"(){\n return this."+s.toLowerCase()+"; \n}";        }else if(map.get(s).equals("DATE")){          str+=" \n public " +"Date "+"get"+s.substring(0,1)+s.substring(1).toLowerCase()+"(){\n return this."+s.toLowerCase()+"; \n}";        }else{          str+=" \n public " +map.get(s)+" "+"get"+s.substring(0,1)+s.substring(1).toLowerCase()+"(){\n return this."+s.toLowerCase()+"; \n}";        }      }      return str;    }    //set方法    //将字段转为set方法      public static String setMethod(Map<String,String> map){        String str="\n//setter方法\n";        for(String s:map.keySet()){          if(map.get(s).equals("NUMBER")){            str+=" \n public void " +"set"+s.substring(0,1)+s.substring(1).toLowerCase()+"("+"int "+s.toLowerCase()+") {\n this."+s.toLowerCase()+"="+s.toLowerCase()+";\n}\n";          }else if(map.get(s).equals("VARCHAR2")){            str+=" \n public void " +"set"+s.substring(0,1)+s.substring(1).toLowerCase()+"("+"String "+s.toLowerCase()+") {\n this."+s.toLowerCase()+"="+s.toLowerCase()+";\n}\n";          }else if(map.get(s).equals("DATE")){            str+=" \n public void " +"set"+s.substring(0,1)+s.substring(1).toLowerCase()+"("+"Date "+s.toLowerCase()+") {\n this."+s.toLowerCase()+"="+s.toLowerCase()+";\n}\n";          }else{            str+=" \n public  void " +" "+"set"+s.substring(0,1)+s.substring(1).toLowerCase()+"("+map.get(s)+" "+s.toLowerCase()+") {\n this."+s.toLowerCase()+"="+s.toLowerCase()+";\n}\n";          }        }        return str;      }}

不用框架自己写的,还有漏吊的,还有很多,没有写明白的,望指正