知识大全 根据JavaBean生成数据库增删改查的SQL语句
Posted 语句
篇首语:弓背霞明剑照霜,秋风走马出咸阳。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 根据JavaBean生成数据库增删改查的SQL语句相关的知识,希望对你有一定的参考价值。
根据JavaBean生成数据库增删改查的SQL语句 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
根据JavaBean生成数据库增删改查的SQL语句 genInsertSQL(Object bean); genUpdateSQL(Object bean); genDeleteSQL(Object bean); genFindAllSQL(String tableName); genFindAllSQL(String tableName) import java io Serializable;
import java lang reflect Field;
import java text SimpleDateFormat;
import java util ArrayList;
import java util Date;
import java util Hashtable;
import java util List;
import domain AG;
/**
* FOR JDBC RUID Operation This class can generate SQL by parameter of
* Object(update/insert/delete)
* or Class(select)
*
*@category util
*@class SQLUtil
*@author
*@date 下午 : :
*@see
*/
public class SQLUtil
private final static String database_table_prefix= database table prefix ;
private String pkColumnName= SN ;
public SQLUtil()
//pkColumnName is vary of Table so mothods which need pkColumn can not use static
this pkColumnName= SN ;
public SQLUtil(String pkColumnName)
//pkColumnName is vary of Table so mothods which need pkColumn can not use static
this pkColumnName=pkColumnName;
/**
* @param Object the object for insert
* @return an insert String like below:
* insert into vmm_ag(sn domainname modifydate testDouble)
* values( domainname to_date( YYYYMMDD ) )
*/
public static String genInsertSQL(Object bean)
List <String> fields=BeanUtil getFields(bean);
List <String> values=BeanUtil getValues String(bean);
Hashtable fieldsTypes = BeanUtil getFieldsAndTypes(bean);
//System out println( fields size(): +fields size()+ values size(): +values size());
if(fields size() !=values size())
String error= ERROR:genInsertSQL(bean) >fields s size does not match values size bean: +bean+
\\n fields size(): +fields size()+ values size(): +values size();
System err println(error);
return error;
//get database table Name
String tableName=getTableName(bean);
String insertSQL= insert into +tableName+ ( ;
for (int i = ; i < fields size(); i++)
//if value of this field is null then ignore this field
if(values get(i) !=null)
insertSQL+=fields get(i);
//if not the last field then add
if(i!=fields size() )
insertSQL+= ;
insertSQL+= ) ;
insertSQL+= values ( ;
for (int j = ; j <fields size(); j++)
String value= ;
String typeOfThisField=(String) fieldsTypes get(fields get(j));
if(typeOfThisField equalsIgnoreCase( String ))
//when String add around the string like: tempString
value= +values get(j)+ ;
else if(typeOfThisField equalsIgnoreCase( Date ))
// select to_date( : : YYYY MM DD HH :MI:SS ) from dual
value= to_date( +(String) values get(j)+ YYYY MM DD HH :MI:SS ) ;
else
//other types like long double add nothing but their value
value=(String) values get(j);
insertSQL +=value;
if(j!=fields size() )
insertSQL += ;
insertSQL += ) ;
//System out println( SQL is: +insertSQL);
return insertSQL;
public String genUpdateSQL(Object bean)
List <String> fields=BeanUtil getFields(bean);
List <String> values=BeanUtil getValues String(bean);
Hashtable fieldsTypes = BeanUtil getFieldsAndTypes(bean);
if(fields size() !=values size())
String error= ERROR:genUpdateSQL(bean) >fields s size does not match values size bean: +bean+
\\n fields size(): +fields size()+ values size(): +values size();
System err println(error);
return error;
//get database table Name
String tableName=getTableName(bean);
String updateSQL= update + tableName + set ;
String pkColumnValue= ;
for (int i = ; i < fields size(); i++)
String setSQL=fields get(i)+ = ;
String typeOfThisField=(String) fieldsTypes get(fields get(i));
String value= ;
if(typeOfThisField equalsIgnoreCase( String ))
//when String add around the string like: tempString
value= +values get(i)+ ;
setSQL+=value;
if(pkColumnName equalsIgnoreCase(fields get(i)))
pkColumnValue=value;
else if(typeOfThisField equalsIgnoreCase( Date ))
// select to_date( : : YYYY MM DD HH :MI:SS ) from dual
value= to_date( +(String) values get(i)+ YYYY MM DD HH :MI:SS ) ;
setSQL+=value;
if(pkColumnName equalsIgnoreCase(fields get(i)))
pkColumnValue=value;
else
//other types like long double add nothing but their value
value=(String) values get(i);
setSQL+=value;
if(pkColumnName equalsIgnoreCase(fields get(i)))
pkColumnValue=value;
if(i!=fields size() )
setSQL += ;
updateSQL +=setSQL;
updateSQL += where +pkColumnName + = +pkColumnValue;
return updateSQL;
/**
* @param Object the object for insert
* @return an insert String like below:
* insert into vmm_ag(sn domainname modifydate testDouble)
* values( domainname to_date( YYYYMMDD ) )
*/
public String genDeleteSQL(Object bean)
List <String> fields=BeanUtil getFields(bean);
List <String> values=BeanUtil getValues String(bean);
Hashtable fieldsTypes = BeanUtil getFieldsAndTypes(bean);
//get database table Name
String tableName=getTableName(bean);
String pkType=(String) fieldsTypes get(pkColumnName);
String pkValue= ;
for (int i = ; i < fields size(); i++)
//find the pk column s value
if(pkColumnName toUpperCase() equalsIgnoreCase(fields get(i)))
pkValue=values get(i);
//if the pkType is String then need to add around the value
//number
if ( String equalsIgnoreCase(pkType))
pkValue= +pkValue+ ;
//String deleteSQL = delete +tableName + where +pkColumnName+ = +pkValue;
String deleteSQL=genRemoveByIdSQL(tableName pkValue);
return deleteSQL;
/**
* @param Object the object for select
* @return an select String like below:
* select * from vmm_ag
*/
public static String genFindAllSQL(String tableName)
String findAllSQL = select * from +tableName;
return findAllSQL;
/**
* @param Object the object for select
* @return an select String like below:
* select * from vmm_ag where sn=
*/
public String genFindByIdSQL(String tableName Serializable id)
String findByIdSQL = select * from +tableName + where +pkColumnName+ = +id;
return findByIdSQL;
/**
* @param Object the object for select
* @return an select String like below:
* select * from vmm_ag where sn=
*/
public String genRemoveByIdSQL(String tableName Serializable id)
String findByIdSQL = delete from +tableName + where +pkColumnName+ = +id;
return findByIdSQL;
/**
* TableName=tablePrefix+ClassName
* eg VMM_AGGroup= VMM_ + AGGroup
* the VMM_ is the prefix
* the AGGroup is the ClassName
* so the VMM_AGGroup is the tableName
* @param bean
* @return tableName
*/
public static String getTableName(Object bean)
String className=BeanUtil getClassName(bean);
//get tablePrefix from config file
String tablePrefix=PropertiesUtil getProperty(database_table_prefix);
//get database table Name
String tableName=tablePrefix+className;
return tableName;
public static String getTableName(String className)
//get tablePrefix from config file
String tablePrefix=PropertiesUtil getProperty(database_table_prefix);
//get database table Name
String tableName=tablePrefix+className;
return tableName;
/**
* 在生成Fields和values时就只生成value不为null的列
* 数据类型的处理
* ( )String加
* ( )long和double直接写
* ( )date型在生成values的时候就生成字符串行 精确到秒
* @param args
*/
public static void main(String[] args)
Date aDate = new Date();
AG ag = new AG();
String sql=genInsertSQL(ag);
System out println(sql);
cha138/Article/program/Java/hx/201311/25899
相关参考
知识大全 .net中使用DatagridView的增删改方法
.net中使用DatagridView的增删改方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JSP结合JavaBean生成静态页面示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishi
JSP调用JavaBean在网页动态生成柱状图 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我
SQLServer生成数据透视表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据透视表是分析
SqlConnectionconn=newSqlConnection(); connConnectionString=Server=;User
在以数据库为基础的应用程序开发中分页是一个比较常用的操作可惜的是SQLServer中没有Oracle中相应的ROWNUM属性可用用触发器生成一个ROWNUM列]勉强可以一用当然用如下的SQL语句也
知识大全 JavaScript根据数据生成百分比图和柱状图的实例代码
JavaScript根据数据生成百分比图和柱状图的实例代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
如何根据excel中指定条件自动生成另一个工作表表一做成数据基础表,表二等于表一的数据加上公式,这样你在表一写数据表二就能跳出数据了。用VB写还可以实现导入功能,直接导入数据表,然后生成表二。在exc
知识大全 sql server自动生成批量执行SQL脚本的批处理
sqlserver自动生成批量执行SQL脚本的批处理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
怎样用SQL2000生成XML 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Command对象