知识大全 根据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生成静态页面示例

JSP结合JavaBean生成静态页面示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishi

知识大全 JSP调用JavaBean在网页动态生成柱状图

JSP调用JavaBean在网页动态生成柱状图  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我

知识大全 SQL Server 生成数据透视表

SQLServer生成数据透视表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据透视表是分析

知识大全 根据数据库生成xml二法

SqlConnectionconn=newSqlConnection();     connConnectionString=Server=;User

知识大全 为数据库的表自动生成行号----为分页打好基础

  在以数据库为基础的应用程序开发中分页是一个比较常用的操作可惜的是SQLServer中没有Oracle中相应的ROWNUM属性可用用触发器生成一个ROWNUM列]勉强可以一用当然用如下的SQL语句也

知识大全 JavaScript根据数据生成百分比图和柱状图的实例代码

JavaScript根据数据生成百分比图和柱状图的实例代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 如何根据excel中指定条件自动生成另一个工作表

如何根据excel中指定条件自动生成另一个工作表表一做成数据基础表,表二等于表一的数据加上公式,这样你在表一写数据表二就能跳出数据了。用VB写还可以实现导入功能,直接导入数据表,然后生成表二。在exc

知识大全 sql server自动生成批量执行SQL脚本的批处理

sqlserver自动生成批量执行SQL脚本的批处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 怎样用SQL 2000 生成XML

怎样用SQL2000生成XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Command对象