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;
}
}
不用框架自己写的,还有漏吊的,还有很多,没有写明白的,望指正
Hibernate生成实体类-手工写法(一)的更多相关文章
- (转)使用myeclipse生成实体类和hibernate映射文件
转至:http://blog.sina.com.cn/s/blog_9658bdb40100uiod.html 1.下载并安装myeclipse,如果已经安装,则忽略该步骤; 2.打开myeclips ...
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
前文: hibernate带给我们的O/RMapping思想是很正确的,即从面相对象的角度来设计工程中的实体对象,建立pojo,然后在编写hbm.xml映射文件来生成数据表.但是在实际开发中,往往我们 ...
- 使用MyEclipse生成实体类和Hibernate映射文件
1.打开MyEclipse DataBase Explorer. 如上图,点击图中2便可切换到MyEclipse DataBase Explorer,若没有该图标,则点击图中1,便可选择MyEclip ...
- J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式
J2EE进阶(十五)MyEclipse反向工程实现从数据库反向生成实体类之Hibernate方式 反向工程又称逆向工程. 开发项目涉及到的表太多,一个一个的写JAVA实体类很是费事.MyEcl ...
- 在Intellij IDEA下通过Hibernate逆向生成实体类
前言:在IDEA中,通过相关插件,可以利用Hibernate逆向生成数据表对应的实体类.具体操作及注意事项见本篇随笔. 1.创建一个基于maven的hibernate工程.并在工程中添夹hiberna ...
- eclipse逆向生成hibernate的实体类(注解和配置文件)
eclipse从数据库逆向生成Hibernate实体类(注解和配置文件) 分类: hibernate 数据库 java 2011-10-22 21:28 2915人阅读 评论(8) 收藏 举报 做项目 ...
- idea hibernate jpa 生成实体类
0,添加mysql数据库连接 1,生成个hibernate.cfg.xml 2,打开Persisitence 3,Import Databases Schema 4,选择表生成实体类
- Eclipse使用hibernate插件反向生成实体类和映射文件
一般dao层的开发是这样的,先进行数据库的设计,什么E-R图之类的那些,然后选择一款数据库产品,建好表.最后反向生成Java实体和映射文件,这样可以保证一致性和便捷性. 如果用myeclipse,逆向 ...
- MyEclipse从数据库反向生成实体类通过Hibernate的方式----mysql数据库实例
1.我们通过DB与数据库建立连接 2.建立web工程,构建Hibernate框架 3.通过table生成实体类
随机推荐
- nlogn 求最长上升子序列 LIS
最近在做单调队列,发现了最长上升子序列O(nlogn)的求法也有利用单调队列的思想. 最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i<j,必有a[i]& ...
- UVALive 6662 TheLastAnt
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- AppDelegate 方法介绍
// // AppDelegate.swift // SwifyDemo import UIKit import CoreData @UIApplicationMain // 入口函数 UIApp ...
- [Winform]使用winform制作远程桌面管理工具
摘要 突然在园子里看到一篇远程连接的文章,觉得挺好玩的,就自己尝试能不能自己制作一个可以管理多台远程连接的工具,说做就做.当然这样的管理工具已经很多,纯粹是为了好玩,采用winform做的. 资料 首 ...
- 使用Microsoft Unity进行日志记录
需要记录日志的地方包括:进入方法的时候,传参的时候,统计执行时间,方法返回参数的时候,退出语句块的时候,出现异常的时候,等等.先来体验不使用Micirosoft Unity进行日志记录. class ...
- [转载]typedef struct和struct的区别
typedef struct tagMyStruct { int iNum; long lLength; } MyStruct; 上面的tagMyStruct是标识符,MyStruct是变量类型(相 ...
- spring事务的隔离级别(透彻理解)
1.spring 事务这个东西,是轮子,每个service,都需要用到.所以干脆就做在框架层实现. 2.spring是怎么给你的service方法加事务的呢?jdk动态代理,会针对每个service类 ...
- ExtJs Ext.data.Store 处理
var storeCpye = new Ext.data.GroupingStore({ proxy : new Ext.data.HttpProxy({ url : 'cxgl_cpye.app?d ...
- Unity3.x游戏开发经典教程 书例 100%完毕~
大家都公布自己的作品,作为一个新人,我也发点什么.刚刚做完了Unity3.x游戏开发经典教程书例不久,假如有同学想学这本书入门U3D,我的作品也能让新人參考一下...脚本都是C#写的.以下附上链接~ ...
- RobotFramework自动化1-环境搭建
前言 Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行. Robot Fram ...