java可以调用cmd命令,利用sql server2000 的命令就可以生成SQL脚本了
‘贰’ 数据库怎么映射生成java实体类
java实体中默认是不会生成多对多关系那张表的,因为两个实体之中两边都是集合类型,对应的面向对象中就是多对多了,当然也可以通过配置生成中间表
‘叁’ 有没有人知道怎么用Java代码从数据库表生成JPA实体类
IDEA ULTIMATE 版支持此功能。
配置IDEA中此项目的Database。添加hibernate支持。
使用Generate Persistence Mapping---->By Database Schema选项。
选择数据库表文件以及生成路径,名称等后自动生成文件。支持注解方式和XML配置方式。
‘肆’ JAVA自动创建实体类工具
AutoJava 是一款免费的,针对于Oracle和SQLserver数据库的、以面向对象模式的Java代码生成工具。AutoJava根据O/R Mapping规则生成表对应的Java对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。借助于AutoJava我们基本上不用再写与数据库相关的操作代码,只需要在此基础上实现相关的业务逻辑,将我们从重复的无太大技术含量的工作中解放出来。
AutoJava 是我在工作中为了省时间而写出来的一个小工具,希望AutoJava能给广大的Java人员在编码过程中节省时间。这是地址 http://www.skycn.com/soft/27950.html
‘伍’ Java中如何动态生成一个类和这个类的对象并且存入数据库
简单啊,建立一个包。
cn.temp.object;存放临时类。
使用File类来写文件,保存为 [ 类.java ]
再动态编译。
OK
‘陆’ java 里 实体类可不可以反向生成数据库
这样的功能既然可以想到,前人也会做好相应的方法来供应用,可以添加Hibernate支持,然后就设置添加实体类或实体类反转成数据库的实体表。
‘柒’ 如何通过java反射将数据库表生成实体类
首先有几点声明:
1、代码是在别人的基础进行改写的;
2、大家有什么改进的意见可以告诉我,也可以自己改好共享给其他人;
3、刚刚毕业,水平有限,肯定有许多不足之处;
4、希望刚刚学习java的同学能有所启发。
//这个是做转换的类,里面的DB只是封装了数据库的连接,大家可以用自己的,随意
package com.tt.util.gen.entity.tool;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import com.tt.util.DB;
public class GenEntityMysql {
private String packageOutPath;// 指定实体生成所在包的路径
private String authorName;// 作者名字
private String tablename;// 表名
private String databasename;// 数据库名
private List<String> tablenames;// 拿到对应数据库中所有的实体类(实体类需要与其他表明做区分)
private List<String> colnames; // 列名集合
private List<String> colTypes; // 列名类型集合
private boolean f_util = false; // 是否需要导入包java.util.*
private boolean f_sql = false; // 是否需要导入包java.sql.*
/*
* 构造函数
*/
public GenEntityMysql() {
// 使用properties读取配置文件
Properties prop = new Properties();
try {
InputStream genentity = getClass().getResourceAsStream(
"/genentity.properties");
prop.load(genentity);
if (genentity != null) {
genentity.close();
}
} catch (Exception e) {
System.out.println("file " + "catalogPath.properties"
+ " not found!\n" + e);
}
this.databasename = prop.getProperty("databasename").toString();
this.tablename = prop.getProperty("tablename").toString();
this.packageOutPath = prop.getProperty("packageOutPath").toString();
this.authorName = prop.getProperty("authorName").toString();
}
// 创建多个实体类
private void genEntity(List<String> tablenames, Connection conn) {
// 使用第归生成文件
for (String tablename : tablenames) {
this.genEntity(tablename, conn);
}
}
// 创建单个实体类
private void genEntity(String tablename, Connection conn) {
String sql = "select * from " + tablename;
PreparedStatement pstmt = null;
ResultSetMetaData rsmd = null;
try {
pstmt = DB.getPStmt(conn, sql);
rsmd = pstmt.getMetaData();
int size = rsmd.getColumnCount(); // 统计列
colnames = new ArrayList<String>();
colTypes = new ArrayList<String>();
for (int i = 0; i < size; i++) {
colnames.add(rsmd.getColumnName(i + 1));
colTypes.add(rsmd.getColumnTypeName(i + 1));
if (colTypes.get(i).equalsIgnoreCase("datetime")) {
f_util = true;
}
if (colTypes.get(i).equalsIgnoreCase("image")
|| colTypes.get(i).equalsIgnoreCase("text")) {
f_sql = true;
}
}
System.out.println(colnames);
System.out.println(colTypes);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
DB.close(pstmt);
}
// 在内存中生成代码
String content = parse(tablename);
// 写入到文件中
try {
File directory = new File("");
String outputPath = directory.getAbsolutePath() + "/src/"
+ this.packageOutPath.replace(".", "/") + "/";
System.out.println("写出的路径:" + outputPath);
// 检测路径是否存在,不存在就创建路径
File path = new File(outputPath);
if (!path.exists() && !path.isDirectory()) {
path.mkdir();
System.out.println(path.exists());
}
// 创建文件
outputPath += initcap(tablename) + ".java";
File file = new File(outputPath);
if (!file.exists()) {
file.createNewFile();
}
// 写出到硬盘
FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);
pw.println(content);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void getAllEntityTable(Connection conn, List<String> tablenames) {
ResultSet rs = null;
try {
DatabaseMetaData dmd = (DatabaseMetaData) conn.getMetaData();
/*
* TABLE_CAT String => 表类别(可为 null)
* TABLE_SCHEM String => 表模式(可为null)
* TABLE_NAME String => 表名称
* TABLE_TYPE String => 表类型
*/
rs = dmd.getTables(null, null, "%", null);
while (rs.next()) {
tablenames.add(rs.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
*
* @param tablename
* @return
*/
private String parse(String tablename) {
StringBuffer sb = new StringBuffer();
// 判断是否导入工具包
if (f_util) {
sb.append("import java.util.Date;\r\n");
}
if (f_sql) {
sb.append("import java.sql.*;\r\n");
}
sb.append("package " + this.packageOutPath + ";\r\n");
sb.append("\r\n");
// 注释部分
sb.append(" /**\r\n");
sb.append(" * " + tablename + " 实体类\r\n");
sb.append(" * " + new Date() + " " + this.authorName + "\r\n");
sb.append(" */ \r\n");
// 实体部分
sb.append("\r\n\r\npublic class " + initcap(tablename) + "{\r\n");
processAllAttrs(sb);// 属性
processAllMethod(sb);// get set方法
sb.append("}\r\n");
return sb.toString();
}
/**
* 功能:生成所有属性
*
* @param sb
*/
private void processAllAttrs(StringBuffer sb) {
for (int i = 0; i < colnames.size(); i++) {
sb.append("\tprivate " + sqlType2JavaType(colTypes.get(i)) + " "
+ colnames.get(i) + ";\r\n");
}
}
/**
* 功能:生成所有方法
*
* @param sb
*/
private void processAllMethod(StringBuffer sb) {
for (int i = 0; i < colnames.size(); i++) {
sb.append("\tpublic void set" + initcap(colnames.get(i)) + "("
+ sqlType2JavaType(colTypes.get(i)) + " " + colnames.get(i)
+ "){\r\n");
sb.append("\t\tthis." + colnames.get(i) + "=" + colnames.get(i)
+ ";\r\n");
sb.append("\t}\r\n");
sb.append("\tpublic " + sqlType2JavaType(colTypes.get(i)) + " get"
+ initcap(colnames.get(i)) + "(){\r\n");
sb.append("\t\treturn " + colnames.get(i) + ";\r\n");
sb.append("\t}\r\n");
}
}
/**
* 功能:将输入字符串的首字母改成大写
*
* @param str
* @return
*/
private String initcap(String str) {
char[] ch = str.toCharArray();
if (ch[0] >= 'a' && ch[0] <= 'z') {
ch[0] = (char) (ch[0] - 32);
}
return new String(ch);
}
/**
* 功能:获得列的数据类型
*
* @param sqlType
* @return
*/
private String sqlType2JavaType(String sqlType) {
if (sqlType.equalsIgnoreCase("bit")) {
return "boolean";
} else if (sqlType.equalsIgnoreCase("tinyint")) {
return "byte";
} else if (sqlType.equalsIgnoreCase("smallint")) {
return "short";
} else if (sqlType.equalsIgnoreCase("int")) {
return "int";
} else if (sqlType.equalsIgnoreCase("bigint")) {
return "long";
} else if (sqlType.equalsIgnoreCase("float")) {
return "float";
} else if (sqlType.equalsIgnoreCase("decimal")
|| sqlType.equalsIgnoreCase("numeric")
|| sqlType.equalsIgnoreCase("real")
|| sqlType.equalsIgnoreCase("money")
|| sqlType.equalsIgnoreCase("smallmoney")) {
return "double";
} else if (sqlType.equalsIgnoreCase("varchar")
|| sqlType.equalsIgnoreCase("char")
|| sqlType.equalsIgnoreCase("nvarchar")
|| sqlType.equalsIgnoreCase("nchar")
|| sqlType.equalsIgnoreCase("text")) {
return "String";
} else if (sqlType.equalsIgnoreCase("datetime")) {
return "Date";
} else if (sqlType.equalsIgnoreCase("image")) {
return "Blod";
}
return null;
}
/**
* 出口 TODO
*
* @param args
*/
public static void main(String[] args) {
new GenEntityMysql().start();
}
private void start() {
// 创建连接
Connection conn = DB.getConn();
if (databasename != null && !databasename.equals("")
&& tablename != null && !tablename.equals("")) {
System.out.println("databasename 和 tablename 不能同时存在");
} else {
// 如果配置文件中有数据库名字,则可以拿到其中所有的实体类
if (databasename != null && !databasename.equals("")) {
// 获取所有实体表名字
tablenames = new ArrayList<String>();
getAllEntityTable(conn, tablenames);
System.out.println(tablenames);
// 为每个实体表生成实体类
genEntity(tablenames, conn);
} else {
// 为指定实体表生成实体类
genEntity(tablename, conn);
}
// 关闭数据库连接
if (conn != null) {
DB.close(conn);
}
}
}
}
‘捌’ java 将普通文件生成数据库文件
帮你临时写了一个大概的.只能说保证简单运行,既然是你自己的毕业设计,缓存,文件名获取这些方面就你自己去完善了.下面是实现代码.注释没时间就没写了.都是很简单的代码,应该能看得明白.
注意点1:数据库中关于文件内容的数据类型最好是我写的那样.以前有什么blob或者image类型的,其实就算用varchar(max)也一样可以实现.但是微软SQL Server的手册上已经明确推荐varbinary](max)类型.具体看你自己选择.
注意点2:因为在从数据库读取的实现上,只是将文件保存至磁盘,所以只return null,如果有需要,可以自己返回file
--------------------------------数据库----------------------------
CREATE TABLE [dbo].[savedFile](
[fileID] [int] IDENTITY(1,1) NOT NULL,
[fileName] [nvarchar](200) NOT NULL,
[fileContent] [varbinary](max) NOT NULL,
[fileLength] [bigint] NOT NULL,
CONSTRAINT [PK_savedFile] PRIMARY KEY CLUSTERED
(
[fileID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
-----------------------------------简单实现的java类------------------------------------------
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//int saveResult = saveFileToDB();
//System.out.println("成功保存" + saveResult + "个文件至数据库中");
openFileFromDB();
}
public static File openFileFromDB() {
String path = "E:\\1.JPG";
File file = new File(path);
String sqlString = "select * from savedfile";
ResultSet rSet = null;
PreparedStatement pstmt = null;
Connection connection = null;
try {
if (connection == null || connection.isClosed()) {
connection = createConnection();
connection.setAutoCommit(false);
}
pstmt = connection.prepareStatement(sqlString);
rSet = pstmt.executeQuery();
connection.commit();
while (rSet.next()) {
OutputStream os = new FileOutputStream(file);
int length = rSet.getInt("fileLength");
byte[] content = rSet.getBytes("fileContent");
os.write(content, 0, length);
}
} catch (SQLException e) {
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeAll(connection, pstmt, rSet);
}
return null;
}
public static int saveFileToDB() {
String sqlString = "INSERT INTO savedFile VALUES(?,?,?)";
PreparedStatement pstmt = null;
Connection connection = null;
int noOfRows = 0;
String path = "D:\\DSC00727.JPG";
File file = new File(path);
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
System.err.println("文件 " + file.getPath() + " 不存在。");
return -1;
}
try {
if (connection == null || connection.isClosed()) {
connection = createConnection();
}
connection.setAutoCommit(false);
pstmt = connection.prepareStatement(sqlString);
pstmt.setString(1, file.getName());
pstmt.setBinaryStream(2, fis);
pstmt.setLong(3, file.length());
noOfRows = pstmt.executeUpdate();
connection.commit();
} catch (SQLException e) {
try {
connection.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
closeAll(connection, pstmt, null);
}
return noOfRows;
}
private static Connection createConnection() {
Connection connection = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DataBaseName=EcrParts", "sa", "ok");
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void closeAll(Connection connection, PreparedStatement pstmt,
ResultSet rSet) {
if (rSet != null) {
try {
rSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
‘玖’ java怎么把数据库数据生成文件
在dos窗口:
生成文件:
mysqlmp –u用户名 –p密码 数据库名>生成的脚本文件路径
例如:mysqlmp –uroot –p123 mydb>C:\ mydb.sql
就可以在C盘下找到mydb.sql文件了
恢复数据库:
还可以通过下面的方式来执行脚本文件:
mysql –u用户名–p密码 数据库<要执行脚本文件路径
例如:mysql -uroot-p123 mydb<c:\mydb.sql
也可以用这种形式:
SOURCEC:\mydb.sql