package com.sqlite;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import com.cjnetwork.webtool.common.Globel;
import com.cjnetwork.webtool.util.NamingUtil;
import com.cjnetwork.webtool.util.PropertyUtil;
public class DaoGenerator implements Generator {
StringBuilder implSb;
// private
@Override
public boolean generate() {
boolean result = false;
try {
generateBaseDao();
Iterator<Entry<String, List<Entry<String, String>>>> iter = Globel.tables.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, List<Entry<String, String>>> entry = iter.next();
generate(entry.getKey(), entry.getValue());
}
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
private void generateBaseDao() {
String res = "resource/SqlHelper.java";
String tar = PropertyUtil.getProperty("daoFileFolder") + File.separator + "SqlHelper.java";
Globel.fileCopyPool.put(res, tar);
}
/**
* 生成dao接口 YanHuan 2011-1-2下午05:01:26
*/
private void generate(String tableName, List<Entry<String, String>> columns) throws Exception {
implSb = new StringBuilder();
implSb.append("package " + PropertyUtil.getProperty("sqlitepackage") + ".basedao;\n");
implSb.append("\n");
// implSb.append("import " + PropertyUtil.getProperty("sqlitepackage")+"." +NamingUtil.getClassName(tableName)+ ";\n");
implSb.append("import java.util.Date;\n");
implSb.append("import android.text.TextUtils;\n");
implSb.append("import android.database.Cursor;\n");
implSb.append("import android.content.ContentValues;\n");
implSb.append("import android.database.sqlite.SQLiteDatabase;\n");
implSb.append("import android.database.sqlite.SQLiteOpenHelper;\n");
implSb.append("import java.text.SimpleDateFormat;\n");
implSb.append("import android.util.SparseArray;\n");
implSb.append("import android.database.sqlite.SQLiteStatement;\n");
implSb.append("import java.text.ParseException;\n");
implSb.append("import android.util.Log;\n");
implSb.append("import java.util.concurrent.locks.ReentrantReadWriteLock;\n");
implSb.append("\n\n");
implSb.append("public class " + NamingUtil.getClassName(tableName) + "Dao{\n");
implSb.append(" ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();\n");
implSb.append(" SimpleDateFormat dfu = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n");
implSb.append(" public static final String TABLENAME =\"" + NamingUtil.getClassName(tableName) + "\";\n");
implSb.append(" COLUMNINDEXS cOLUMNINDEXS=new COLUMNINDEXS();\n");
implSb.append(" COLUMNS cOLUMNS=new COLUMNS();\n");
implSb.append(" private final SQLiteOpenHelper mOpenHelper;\n");
implSb.append(" public " + NamingUtil.getClassName(tableName) + "Dao(SQLiteOpenHelper openHelper){\n");
implSb.append(" mOpenHelper=openHelper;\n ");
Statement stat = Launch.con.createStatement();
ResultSet rs = stat.executeQuery("SELECT type,sql FROM sqlite_master where (type='table' or type= 'index') and tbl_name='" + tableName + "'");
while (rs.next()) {
String type = rs.getString("type");
if(type.equals("table") ){
String sql = rs.getString("sql");
sql= sql.replace("CREATE TABLE", "CREATE TABLE IF NOT EXISTS");
sql=sql.replaceAll("\r\n", "");
sql=sql.replaceAll("\n", "");
// sql= sql.replaceAll("\r\n" ,"\" + \n \"" );
implSb.append(" mOpenHelper.getWritableDatabase().execSQL(\"" +sql + "\"); \n");
}
else if(type.equals("index")){
String sql = rs.getString("sql");
sql= sql.replace(" INDEX ", " INDEX IF NOT EXISTS ");
implSb.append(" mOpenHelper.getWritableDatabase().execSQL(\"" +sql + "\"); \n");
}
}
rs.close();
implSb.append(" }\n");
// 查询
implSb.append(" public Cursor query(String whereClause, String []whereArgs){\n");
implSb.append(" final String sql = \"SELECT *\"\n");
implSb.append(" + \" FROM \" + (TextUtils.isEmpty(whereClause)? TABLENAME : TABLENAME+\" WHERE \"+whereClause);\n");
implSb.append(" return mOpenHelper.getReadableDatabase().rawQuery(sql, whereArgs);\n");
implSb.append(" }\n\n\n");
// + cOLUMNS.username + ","+ cOLUMNS.ID
//-------------insertList
implSb.append(" public boolean insertList( SparseArray<"+NamingUtil.getClassName(tableName)+"> list) {\n");
implSb.append(" if ( null == list || list.size() <= 0) {\n");
implSb.append(" return false;\n");
implSb.append(" }\n");
implSb.append(" SQLiteDatabase db = mOpenHelper.getWritableDatabase();\n");
implSb.append(" try {\n");
implSb.append(" String sql =\"insert into " +tableName + "(\" \n");
String wenhao="";
for (int i = 0; i < columns.size(); i++) {
Entry<String, String> entry = columns.get(i);
String columnName = NamingUtil.getInstanceName(entry.getKey());
if(i==columns.size()-1)
implSb.append(" + cOLUMNS." + columnName);
else implSb.append(" + cOLUMNS." + columnName + "+\",\"");
wenhao+=",?";
}
implSb.append(" + \") \" + \"values("+wenhao.substring(1)+")\";\n");
implSb.append(" String createdate= dfu.format(new Date());\n");
implSb.append(" SQLiteStatement stat = db.compileStatement(sql);\n");
implSb.append(" db.beginTransaction();\n");
implSb.append(" for (int i=0;i<list.size();i++) {\n");
implSb.append(" "+NamingUtil.getClassName(tableName)+" entity = list.get(list.keyAt(i)); \n");
for (int i = 0; i < columns.size(); i++) {
Entry<String, String> entry = columns.get(i);
String columnName = NamingUtil.getInstanceName(entry.getKey());
if (entry.getValue().contains("Int")||entry.getValue().startsWith("Long")) {
implSb.append(" if(null==entity."+ columnName + ") ");
if(columnName.toLowerCase().equals("lifestatus")){
implSb.append(" stat.bindLong("+(i+1)+",1);else\n");
}else if(columnName.toLowerCase().equals("upgradeflag")){
implSb.append(" stat.bindLong("+(i+1)+",1);else\n");
}else{
implSb.append(" stat.bindNull("+(i+1)+"); else\n");
}
implSb.append(" stat.bindLong(" +(i+1)+",entity."+ columnName + ");\n");
} else if (entry.getValue().startsWith("String")) {
implSb.append(" if(null==entity."+ columnName + "||entity."+ columnName +".length()==0) ");
implSb.append(" stat.bindNull("+(i+1)+");else\n");
implSb.append(" stat.bindString(" +(i+1)+",entity."+ columnName + ");\n");
}
else if (entry.getValue().toLowerCase().startsWith("float")||entry.getValue().toLowerCase().startsWith("double")) {
implSb.append(" stat.bindDouble(" +(i+1)+",entity."+ columnName + ");\n");
}
else if (entry.getValue().contains("Date")) {
// implSb.append(" if(null==entity."+ columnName + ") ");
// implSb.append(" stat.bindNull("+(i+1)+"); else\n");
implSb.append(" stat.bindString(" +(i+1)+",createdate);\n");
}
}
implSb.append(" long result = stat.executeInsert();\n");
implSb.append(" if (result < 0) {\n");
implSb.append(" return false;\n");
implSb.append(" }\n");
implSb.append(" entity.id=(int)result;\n");
implSb.append(" }\n");
implSb.append(" db.setTransactionSuccessful();\n");
implSb.append(" } catch (Exception e) {\n");
implSb.append(" e.printStackTrace();\n");
implSb.append(" return false;\n");
implSb.append(" } finally {\n");
implSb.append(" try {\n");
implSb.append(" if (null != db) {\n");
implSb.appe
没有合适的资源?快使用搜索试试~ 我知道了~
webtool自动生成数据库代码
共89个文件
jar:37个
java:27个
xml:10个
需积分: 9 15 下载量 27 浏览量
2017-02-18
23:43:31
上传
评论 1
收藏 17.05MB ZIP 举报
温馨提示
webtool自动生成数据库代码,支持mysql和sqlite,自己花了两年时间整理完, 使用方法:设计好数据库后,设置配置文件指向目标数据库,执行main方法,自动生成数据库操作代码
资源推荐
资源详情
资源评论
收起资源包目录
webtool-master.zip (89个子文件)
webtool-master
conf
webtool.properties 581B
resource
.project 1KB
.mymetadata 308B
struts.xml 483B
database.xlsx 12KB
index.jsp 830B
applicationContext.xml 3KB
add.jsp 1KB
hibernate.cfg.xml 960B
lib
org.springframework.beans-3.0.5.RELEASE.jar 542KB
cglib-nodep-2.1.jar 316KB
junit-4.8.2.jar 232KB
javassist-3.9.0.GA.jar 583KB
org.springframework.expression-3.0.5.RELEASE.jar 166KB
dom4j-1.6.1.jar 307KB
org.springframework.aspects-3.0.5.RELEASE.jar 35KB
c3p0-0.9.1.jar 594KB
hibernate-jpa-2.0-api-1.0.0.Final.jar 99KB
org.springframework.asm-3.0.5.RELEASE.jar 52KB
org.springframework.transaction-3.0.5.RELEASE.jar 226KB
org.springframework.aop-3.0.5.RELEASE.jar 314KB
antlr-2.7.6.jar 433KB
commons-collections-3.1.jar 546KB
struts2-core-2.2.1.jar 755KB
org.springframework.orm-3.0.5.RELEASE.jar 326KB
struts2-spring-plugin-2.2.1.jar 21KB
commons-io-1.3.2.jar 86KB
hibernate3.jar 3.74MB
org.springframework.web-3.0.5.RELEASE.jar 386KB
commons-fileupload-1.2.1.jar 56KB
freemarker-2.3.16.jar 860KB
ognl-3.0.jar 224KB
slf4j-api-2.0.99.jar 23KB
xwork-core-2.2.1.jar 997KB
aopalliance.jar 4KB
org.springframework.context-3.0.5.RELEASE.jar 653KB
org.springframework.core-3.0.5.RELEASE.jar 373KB
jta-1.1.jar 11KB
org.springframework.jdbc-3.0.5.RELEASE.jar 377KB
mysql-connector-java-5.0-nightly-20071116-bin.jar 528KB
commons-logging-1.0.4.jar 37KB
aspectjweaver-1.5.0.jar 1.67MB
slf4j-nop-1.5.6.jar 5KB
listAll.jsp 973B
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.jsdt.ui.superType.name 6B
.jsdtscope 488B
viewForEdit.jsp 1KB
web.xml 1KB
SampleModel.java 121B
@@project_name.iml 343B
view.jsp 838B
SqlHelper.java 3KB
BaseDao.java 6KB
src
com
cjnetwork
webtool
generator
ConfigFileGenerator.java 6KB
JspGenerator.java 9KB
Generator.java 95B
DaoGenerator.java 7KB
ServiceGenerator.java 6KB
FileCopyGenerator.java 651B
JarGenerator.java 776B
ActionGenerator.java 7KB
ModelGenerator.java 13KB
common
Seperator.java 72B
Globel.java 795B
util
JavaFileUtil.java 906B
PropertyUtil.java 2KB
ConfigUtil.java 4KB
NamingUtil.java 1000B
FileUtil.java 6KB
mysql
Launch.java 1KB
TestDbMetaData.java 4KB
sqlite
Launch.java 1KB
Generator.java 74B
DaoGenerator.java 25KB
FileCopyGenerator.java 628B
ModelGenerator.java 7KB
Main.java 118B
lib
sqlitejdbc-v056.jar 2.56MB
thumbnailator-0.4.8.jar 107KB
mysql-connector-java-5.0-nightly-20071116-bin.jar 528KB
webtool.iml 1KB
.idea
misc.xml 514B
compiler.xml 711B
description.html 97B
encodings.xml 321B
modules.xml 254B
copyright
profiles_settings.xml 74B
META-INF
application.xml 323B
共 89 条
- 1
资源评论
AI视觉网奇
- 粉丝: 7w+
- 资源: 92
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功