首页 > 学院 > 开发设计 > 正文

Hibernate生成实体类-手工写法(一)

2019-11-14 23:13:26
字体:
来源:转载
供稿:网友
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;            }}

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表