欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 注解 阐释 hibernate ORM

程序员文章站 2022-07-12 18:27:03
...

Java 注解 阐释 hibernate ORM

 

package java2015.java07.java.anno;
/**
 * @author baoyou  E-mail:curiousby@163.com
 * @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:curiousby@163.com
 * @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:curiousby@163.com
 * @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:curiousby@163.com
 * @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("1223716098@qq.com,curiousby@163.com");
		
		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();
	}
}

  

 

 
Java 注解 阐释 hibernate ORM 
            
    
    博客分类: hibernatejava Java注解阐释hibernateORM 
 

 

 

 

 

 

 

 

 

 

捐助开发者

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


Java 注解 阐释 hibernate ORM 
            
    
    博客分类: hibernatejava Java注解阐释hibernateORM Java 注解 阐释 hibernate ORM 
            
    
    博客分类: hibernatejava Java注解阐释hibernateORM Java 注解 阐释 hibernate ORM 
            
    
    博客分类: hibernatejava Java注解阐释hibernateORM 
 
 
 谢谢您的赞助,我会做的更好!

 

 

 

  • Java 注解 阐释 hibernate ORM 
            
    
    博客分类: hibernatejava Java注解阐释hibernateORM 
  • 大小: 5.3 KB