📄 sqlgeneratorimplement.java
字号:
/*
* Copyright (c) 2007-2010 Tanming1003 Inc.
* All rights reserved.
*
* tanming1003<tanming1003@163.com>
*
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of tanming1003 nor the names of its contributors
* may be used to endorse or promote products derived from this
* software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package hunnu.edu.cn.product.common.db.sql;
import hunnu.edu.cn.product.common.db.model.Table;
import hunnu.edu.cn.product.log.LogFactory;
import hunnu.edu.cn.product.log.LogLog;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author tanming1003
* @date Dec 11, 2007
* @time 11:40:53 PM
* @project_name Insurance
* @package_name org.tan.ming.db.sql
* @file_name SqlGeneratorImplement.java
* @version 1.0
*/
public class SqlGeneratorImplement implements SqlGenerator
{
private LogLog log=LogFactory.newInstance().getLog(this.getClass());
public String getSql(Class<?> table)
{
String tableName=table.getName();
return getSql(tableName);
}
public String getSql(String className)
{
log.info("Auto generate the query sql sentence......");
StringBuffer buffer=new StringBuffer();
try
{
Class<?> c=Class.forName(className);
Table t=(Table)c.newInstance();
buffer.append("select * from ");
buffer.append(t.getSimpleName().toLowerCase());
buffer.append(" where ");
List<?> list=t.getKeys();
for(int i=0;i<list.size();i++)
{
Map<?, ?> map=(HashMap<?, ?>)list.get(i);
Set<?> set=map.keySet();
Iterator<?> it=set.iterator();
String key="";
while(it.hasNext())
{
key=(String)it.next();
}
buffer.append(key);
if(i<list.size()-1)
buffer.append("=? and ");
else
buffer.append("=?,");
}
}
catch (ClassNotFoundException e)
{
log.debug("Class can't not be found.", e);
}
catch (InstantiationException e)
{
log.debug("Can't instance the class. ", e);
}
catch (IllegalAccessException e)
{
log.debug("Can't access the object method.",e);
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String loadSql(Class<?> table)
{
String tableName=table.getSimpleName();
return loadSql(tableName);
}
public String loadSql(String className)
{
StringBuffer buffer=new StringBuffer();
try
{
Class<?> c=Class.forName(className);
Table t=(Table)c.newInstance();
buffer.append("select * from ");
buffer.append(t.getSimpleName().toLowerCase());
buffer.append(" where ");
List<?> list=t.getKeys();
for(int i=0;i<list.size();i++)
{
Map<?, ?> map=(HashMap<?, ?>)list.get(i);
Set<?> set=map.keySet();
Iterator<?> it=set.iterator();
String key="";
while(it.hasNext())
{
key=(String)it.next();
}
buffer.append(key);
if(i<list.size()-1)
buffer.append("=? and ");
else
buffer.append("=?,");
}
}
catch (ClassNotFoundException e)
{
log.debug("Class not found.", e);
}
catch (InstantiationException e)
{
log.debug("Can't instance the class.",e);
}
catch (IllegalAccessException e)
{
log.debug("Can't access the object field or method. ", e);
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String removeSql(Table table)
{
StringBuffer buffer=new StringBuffer();
buffer.append("delete from ");
buffer.append(table.getSimpleName().toLowerCase());
buffer.append(" where ");
Class<? extends Table> c=table.getClass();
Table t;
try
{
t = (Table)c.newInstance();
List<?> list=t.getKeys();
for(int i=0;i<list.size();i++)
{
Map<?, ?> map=(HashMap<?, ?>)list.get(i);
Set<?> set=map.keySet();
Iterator<?> it=set.iterator();
String key=null;
while(it.hasNext())
{
key=(String)it.next();
}
buffer.append(key);
buffer.append("=?,");
}
}
catch (InstantiationException e)
{
log.debug("Can't instance the class.", e);
}
catch (IllegalAccessException e)
{
log.debug("Can't access the object's field or method.",e);
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String saveSql(Table table)
{
StringBuffer buffer=new StringBuffer();
Field[] fields=table.getClass().getDeclaredFields();
buffer.append("insert into "+table.getSimpleName().toLowerCase()+" values(");
for(int i=0;i<fields.length;i++)
{
buffer.append("?,");
}
buffer.setCharAt(buffer.length()-1, ')');
buffer.append(" ");
return buffer.toString();
}
public String updateSql(Table table)
{
StringBuffer buffer=new StringBuffer();
Field[] fields=table.getClass().getDeclaredFields();
buffer.append("update ");
buffer.append(table.getSimpleName().toLowerCase());
buffer.append(" set ");
for(int i=0;i<fields.length;i++)
{
String fieldName=fields[i].getName();
if(isKey(table,fieldName))
continue;
buffer.append(fields[i].getName());
buffer.append("=?,");
}
buffer.deleteCharAt(buffer.length()-1);
buffer.append(" where ");
List<?> list=table.getKeys();
for(int i=0;i<list.size();i++)
{
Map<?, ?> map=(HashMap<?, ?>)list.get(i);
Set<?> set=map.keySet();
Iterator<?> it=set.iterator();
String key="";
while(it.hasNext())
{
key=(String)it.next();
}
buffer.append(key);
if(i<list.size()-1)
buffer.append("=? and ");
else
buffer.append("=?,");
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String getAll(String tableName)
{
StringBuffer buffer=new StringBuffer();
buffer.append("select * from "+ tableName+" ");
return buffer.toString();
}
public String loadAll(String tableName)
{
return getAll(tableName);
}
public String loadColumns(String tableName, String[] columns)
{
StringBuffer buffer=new StringBuffer();
buffer.append("select ");
for(int i=0;i<columns.length;i++)
buffer.append(columns[i]+",");
buffer.deleteCharAt(buffer.length()-1);
buffer.append(" from "+tableName.toLowerCase());
buffer.append(" where ");
try
{
Class<?> c=Class.forName("org.tan.ming.db.tables."+tableName);
Table t=(Table)c.newInstance();
List<?> list=t.getKeys();
for(int i=0;i<list.size();i++)
{
Map<?, ?> map=(HashMap<?, ?>)list.get(i);
Set<?> set=map.keySet();
Iterator<?> it=set.iterator();
String key="";
while(it.hasNext())
{
key=(String)it.next();
}
buffer.append(key);
if(i<list.size()-1)
buffer.append("=? and ");
else
buffer.append("=?,");
}
}
catch (ClassNotFoundException e)
{
log.debug("Class not found.", e);
}
catch (InstantiationException e)
{
log.debug("Can't instance the class.",e);
}
catch (IllegalAccessException e)
{
log.debug("Can't access the object field or method. ", e);
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String loadColumns(Class<?> table, String[] columns)
{
return loadColumns(table.getSimpleName(),columns);
}
public String loadColumns(Table table,String[] columns)
{
return loadColumns(table.getClass(),columns);
}
public String query(String tableName, String[] queryColumns,
String[] columnsName)
{
StringBuffer buffer=new StringBuffer();
buffer.append("select ");
for(int i=0;i<queryColumns.length;i++)
buffer.append(queryColumns[i]+",");
buffer.deleteCharAt(buffer.length()-1);
buffer.append(" from "+tableName.toLowerCase());
buffer.append(" where ");
for(int i=0;i<columnsName.length;i++)
{
buffer.append(columnsName[i]);
if(i<columnsName.length-1)
buffer.append("=? and ");
else
buffer.append("=?,");
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String query(String tableName, String queryColumn, String columnName)
{
StringBuffer buffer=new StringBuffer();
buffer.append("select "+queryColumn+" from "+tableName.toLowerCase()+" where "+columnName+"=? ");
return buffer.toString();
}
public String query(Table table, String[] queryColumns, String[] columnsName)
{
return query(table.getClass().getSimpleName(),queryColumns,columnsName);
}
public String query(Table table, String queryColumn, String columnName)
{
return query(table.getClass().getSimpleName(),queryColumn,columnName);
}
public String query(String tableName, String queryColumn)
{
StringBuffer buffer=new StringBuffer();
buffer.append("select "+queryColumn.toLowerCase()+" from "+tableName.toLowerCase());
return buffer.toString();
}
public String load(String tableName, String conditionColumn)
{
StringBuffer buffer=new StringBuffer();
buffer.append("select * from "+tableName.toLowerCase()+" where "+conditionColumn+"=? ");
return buffer.toString();
}
@SuppressWarnings("unchecked")
public boolean isKey(Table table,String fieldName)
{
List<Map<String,Object>> list=(List<Map<String,Object>>)table.getKeys();
for(int j=0;j<list.size();j++)
{
Map<String,Object> map=(Map<String,Object>)list.get(j);
Set<String> keys=map.keySet();
Iterator<String> it=keys.iterator();
if(it.hasNext())
{
String keyName=it.next();
if(keyName.equals(fieldName))
return true;
}
}
return false;
}
public String updateSql(Table table, boolean hasKey)
{
if(!hasKey)
{
StringBuffer buffer=new StringBuffer();
Field[] fields=table.getClass().getDeclaredFields();
buffer.append("update ");
buffer.append(table.getSimpleName().toLowerCase());
buffer.append(" set ");
for(int i=0;i<fields.length;i++)
{
fields[i].setAccessible(true);
try
{
if(fields[i].get(table)!=null)
{
buffer.append(fields[i].getName());
buffer.append("=?,");
}
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
else return updateSql(table);
}
@SuppressWarnings("unchecked")
public String getSql(Table table)
{
log.info("Auto generate the query sql sentence......");
StringBuffer buffer=new StringBuffer();
try
{
Class<?> c=table.getClass();
Table t=(Table)c.newInstance();
buffer.append("select * from ");
buffer.append(t.getSimpleName().toLowerCase());
buffer.append(" where ");
List<Map<String,Object>> list=(List<Map<String,Object>>)t.getKeys();
for(int i=0;i<list.size();i++)
{
Map map=(HashMap)list.get(i);
Set set=map.keySet();
Iterator it=set.iterator();
String key="";
while(it.hasNext())
{
key=(String)it.next();
}
buffer.append(key);
buffer.append("=?,");
}
}
catch (InstantiationException e)
{
log.debug("Can't instance the class. ", e);
}
catch (IllegalAccessException e)
{
log.debug("Can't access the object method.",e);
}
buffer.setCharAt(buffer.length()-1, ' ');
return buffer.toString();
}
public String getAll(Table table)
{
return getAll(table.getSimpleName());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -