Java 注解 阐释 hibernate ORM

Java 注解 阐释 hibernate ORM

package java2015.java07.java.anno;
/**
 * @author baoyou  E-mail:[email protected]
 * @version 创建时间:2015年7月23日 下午2:51:27 
 * des:
 */
@Table("student")
public class Filter {

	@Column("id")
	private int stuId;
	@Column("name")
	private String stuName;
	@Column("email")
	private String email;
	
	public int getStuId() {
		return stuId;
	}
	public void setStuId(int stuId) {
		this.stuId = stuId;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
}
package java2015.java07.java.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; 
 

/**
 * @author baoyou  E-mail:[email protected]
 * @version 创建时间:2015年7月23日 下午2:54:47 
 * des:
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
	String value();
}
package java2015.java07.java.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author baoyou  E-mail:[email protected]
 * @version 创建时间:2015年7月23日 下午2:54:22 
 * des:
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
  public String value();
}
package java2015.java07.java.anno;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @author baoyou  E-mail:[email protected]
 * @version 创建时间:2015年7月23日 下午3:19:11 
 * des:
 */
public class Test {

	
	public static void main(String[] args) {
		
		Filter f1 = new Filter();
		f1.setStuId(10);
		
		Filter f2 = new Filter();
		f2.setStuId(10);
		f2.setStuName("baoyou");
		
		Filter f3 = new Filter();
		f3.setEmail("[email protected],[email protected]");
		
		String sql1 = query(f1);
		String sql2 = query(f2);
		String sql3 = query(f3);
		
		System.out.println(sql1);
		System.out.println(sql2);
		System.out.println(sql3);
	}

	@SuppressWarnings("unchecked")
	private static String query(Filter f) { 
		StringBuffer sb = new StringBuffer();
		Class c=  f.getClass();
		boolean isExist = c.isAnnotationPresent(Table.class);
		if (!isExist) {
			return null;
		}
		Table t = (Table) c.getAnnotation(Table.class);
		String  tableName = t.value();
		sb.append(" select * from ").append(tableName).append(" 1=1 ");
		Field[] fArray = c.getDeclaredFields();
		for (Field field : fArray) {
			boolean fExist = field.isAnnotationPresent(	Column.class);
			if (!fExist) {
				continue;
			}
			Column column = field.getAnnotation(Column.class);
			String columnName = column.value();
			String fieldName = field.getName();
			String getMethodName = "get" +fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
			Object fieldValue=null;
			try {
				Method getMethod =c.getMethod(getMethodName);
				fieldValue = getMethod.invoke(f);
			} catch (Exception e) {   
			}
			if (fieldValue == null || (fieldValue instanceof Integer && (Integer)fieldValue == 0) ) {
				continue;
			}
			sb.append(" and ").append( columnName );
			if (fieldValue instanceof String){
				if (((String) fieldValue ).contains(",")) {
					String[] values = ((String) fieldValue ).split(",");
					sb.append(" in ( ");
					for (String v : values) {
						sb.append("'").append(v).append("',");
					}
					sb.deleteCharAt(sb.length()-1);
					sb.append(" )");
				} else{
				sb.append(" = '").append(fieldValue).append("' ");
				}
			}else if (fieldValue instanceof Integer){
				sb.append(" = ").append(fieldValue).append(" ");
			}
			
		
		}
		return sb.toString();
	}
}

  

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

猜你喜欢

转载自knight-black-bob.iteye.com/blog/2229834