BeanUtil里利用反射来写增、删、改、查

import java.lang.reflect.*;
import java.text.SimpleDateFormat;






public class BeanUtil {
private static BeanUtil bean=null;
private BeanUtil(){

}
public static BeanUtil getNew()
{
if(bean==null)
{
bean = new BeanUtil();

}
return  bean;
}


   public String getSelectSQL(Object obj) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
  Class<? extends Object> classzz = obj.getClass();
  String tableName = classzz.getSimpleName();
  StringBuffer sbsql = new StringBuffer();
  sbsql.append("Select * From "+tableName+" ");
  sbsql.append(" Where 1=1 ");
  Field[] fields = classzz.getDeclaredFields();//获取所定义的字段
  for(Field f:fields){
 f.setAccessible(true);
 Object o= f.get(obj);
  if(o!=null)
  {
  if(f.isAnnotationPresent(PrimaryKey.class))
  {
  if(o instanceof String)
  {
     sbsql.append(" And "+f.getName() +"='"+o+"' ");
  }
  else
  {
 sbsql.append(" And "+f.getName()+"="+o);
  }
  }
  else if(!f.isAnnotationPresent(NonField.class))
  {
  if(o instanceof String)
  {
     sbsql.append(" And "+f.getName() +"='"+o+"' ");
  }
  else
  {
 sbsql.append(" And "+f.getName()+"="+o);
  }
  }
  
  
  }
  }
  System.out.println(sbsql.toString());
  return sbsql.toString();
  
   }
   public  String getUpdate(Object obj) throws IllegalArgumentException, IllegalAccessException{
  Class<? extends Object> classzz = obj.getClass();
  String sql="Update "+ classzz.getSimpleName() + " Set ";
  String sql2=" ";
  String sql3=" Where ";
  Field[] fields = classzz.getDeclaredFields();
  for(Field f:fields){
  f.setAccessible(true);//可以访问private值
  Object value = f.get(obj);
  //如果该字段具备PrimaryKey的注解
  if(f.isAnnotationPresent(PrimaryKey.class)){//该字段是主键字段
  if(value instanceof String){
  sql3 += f.getName() +"='"+value+"'";
  }else{
  sql3 += f.getName()+"="+value+"";
  }
  }else if(!f.isAnnotationPresent(NonField.class)){
  if(value instanceof String){
  sql2 += f.getName() +"='"+value+"',";
  }else{
  sql2 +=f.getName()+"="+value+", ";
  }
  }
  }
  sql2 = sql2.substring(0,sql2.length()-1);
  sql = sql + sql2 +sql3;
  return sql;
  
   }


public  String getInsertSQL(Object obj)
throws IllegalArgumentException, IllegalAccessException {


Class<? extends Object> objClass = obj.getClass();
String strSQL = new String("insert into " + objClass.getSimpleName()
+ "(#COLS) values (#VALS)");


Field fields[] = objClass.getDeclaredFields();
StringBuffer cols = new StringBuffer("");
StringBuffer values = new StringBuffer("");


for (Field field : fields) {
field.setAccessible(true);// 访问的私有字段
if(field.isAnnotationPresent(NonField.class)){
continue;
}
if (field.isAnnotationPresent(PrimaryKey.class)) {// 说明是主键列
String seqname = field.getAnnotation(PrimaryKey.class).seqname();
cols.append(field.getName() + ",");
if (seqname.isEmpty()) {// 说明是空的


Object objectvalue = field.get(obj);
if (objectvalue instanceof String) {
values.append("'" + objectvalue + "',");
} else {
values.append("" + objectvalue + ",");
}
} else { // 说明是有序列的
values.append("" + seqname + ".nextval,");
}
} else {
cols.append(field.getName() + ",");
Object objectvalue = field.get(obj);
if (objectvalue instanceof String) {
values.append("'" + objectvalue + "',");
} else {
values.append("" + objectvalue + ",");
}
}


}
if (cols.length() > 1 && values.length() > 1) {
cols.delete(cols.length() - 1, cols.length());
values.delete(values.length() - 1, values.length());
strSQL = strSQL.replace("#COLS", cols).replace("#VALS", values);
} else {


return null;
}


return strSQL;
}
   public  String getDeleteSQL(Object obj) throws IllegalArgumentException, IllegalAccessException{
  Class<? extends Object> objClass = obj.getClass();
  String sql=" Delect From "+objClass.getSimpleName()+" Where ";
  String sql2="";
  Field[] fields = objClass.getDeclaredFields();
  for(Field f:fields){
  f.setAccessible(true);
  Object value=f.get(obj);
  if(value!=null)
  {
  if(f.isAnnotationPresent(PrimaryKey.class))
  {
  if(value instanceof String)
  {
  sql2+=" "+f.getName()+"= '"+value+"' ";
  }
  else
  {
  sql2+=" "+f.getName()+"= "+value+" ";
  }
 
  }
  }
  
  }
  return sql+sql2;
   }
   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值