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;
}
}

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

Hibernate生成实体类-手工写法(一)的更多相关文章

  1. (转)使用myeclipse生成实体类和hibernate映射文件

    转至:http://blog.sina.com.cn/s/blog_9658bdb40100uiod.html 1.下载并安装myeclipse,如果已经安装,则忽略该步骤; 2.打开myeclips ...

  2. MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程

    前文: hibernate带给我们的O/RMapping思想是很正确的,即从面相对象的角度来设计工程中的实体对象,建立pojo,然后在编写hbm.xml映射文件来生成数据表.但是在实际开发中,往往我们 ...

  3. 使用MyEclipse生成实体类和Hibernate映射文件

    1.打开MyEclipse DataBase Explorer. 如上图,点击图中2便可切换到MyEclipse DataBase Explorer,若没有该图标,则点击图中1,便可选择MyEclip ...

  4. J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式

    J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式   反向工程又称逆向工程.   开发项目涉及到的表太多,一个一个的写JAVA实体类很是费事.MyEcl ...

  5. 在Intellij IDEA下通过Hibernate逆向生成实体类

    前言:在IDEA中,通过相关插件,可以利用Hibernate逆向生成数据表对应的实体类.具体操作及注意事项见本篇随笔. 1.创建一个基于maven的hibernate工程.并在工程中添夹hiberna ...

  6. eclipse逆向生成hibernate的实体类(注解和配置文件)

    eclipse从数据库逆向生成Hibernate实体类(注解和配置文件) 分类: hibernate 数据库 java 2011-10-22 21:28 2915人阅读 评论(8) 收藏 举报 做项目 ...

  7. idea hibernate jpa 生成实体类

    0,添加mysql数据库连接 1,生成个hibernate.cfg.xml 2,打开Persisitence 3,Import Databases Schema 4,选择表生成实体类

  8. Eclipse使用hibernate插件反向生成实体类和映射文件

    一般dao层的开发是这样的,先进行数据库的设计,什么E-R图之类的那些,然后选择一款数据库产品,建好表.最后反向生成Java实体和映射文件,这样可以保证一致性和便捷性. 如果用myeclipse,逆向 ...

  9. MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例

    1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类

随机推荐

  1. MySQL增强版命令行客户端连接工具(mycli)

    效果: 安装: http://www.mycli.net/install 官网: http://www.mycli.net/install

  2. [转贴] start-stop-daemon命令

    转贴自 http://www.lampblog.net/ubuntu/start-stop-daemon%E5%91%BD%E4%BB%A4/ 1.功能作用 启动和停止系统守护程序 2.位置 /sbi ...

  3. Linux与Windows比较出的20个优势

    Linux相信大家并不会陌生,Android(安卓或安致)就是基于Linux平台的开源手机操作系统,在电脑方面有ubuntu(中文名:乌班图)等等也是基于linux. Windows与Linux Li ...

  4. 淘宝--印风 专注于MySQL内核代码

    http://blog.csdn.net/zhaiwx1987/article/details/6113472?utm_source=jiancool

  5. java基础学习总结——方法的重载(overload)

    一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样.只要这两方面有其中的一方面不一样就可以构成方法 ...

  6. POJ 3740 Dancing Links

    Dancing Links学习:http://www.cnblogs.com/steady/archive/2011/03/15/1984791.html 以及图文学习:http://www.cnbl ...

  7. 算法:哈希表格(Hash Table)

    背景 Java 和 .Net 平台都有一个所有引用类型都会间接或直接继承的类型:Object,这个类型提供最基本的相等性比较算法和哈希算法,很多书上都给出了在重写这两个算法的时候的主意事项,其中大多数 ...

  8. 最大熵,熵,MLE的解释,还行

    这篇文章: https://blog.csdn.net/jiaoyangwm/article/details/81276921

  9. go语言基础之结构体成员的使用指针变量

    1.结构体成员的使用:指针变量 示例: package main //必须有个main包 import "fmt" //定义一个结构体类型 type Student struct ...

  10. T-sql语句修改数据库逻辑名、数据库名、物理名

    --更改MSSQL数据库物理文件名Sql语句的写法 --注意:要在活动监视器里面确保没有进程连接你要改名的数据库!!!!!!!!!!!!!!!!!!!! -- Sql语句如下 USE master - ...