Java 注解 阐释 hibernate ORM

简介: Java 注解 阐释 hibernate ORM   package java2015.java07.java.anno; /** * @author baoyou E-mail:curiousby@163.

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();
	}
}

  

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

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



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

 

 

 

目录
相关文章
|
29天前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
7天前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
20天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
23天前
|
Java 编译器 测试技术
|
9天前
|
Java
扫盲java基础-注解
扫盲java基础-注解
|
2月前
|
存储 JSON 前端开发
【Java】用@JsonFormat(pattern = “yyyy-MM-dd“)注解,出生日期竟然年轻了一天
在实际项目中,使用 `@JsonFormat(pattern = "yyyy-MM-dd")` 注解导致出生日期少了一天的问题,根源在于夏令时的影响。本文详细解析了夏令时的概念、`@JsonFormat` 注解的使用方法,并提供了三种解决方案:在注解中添加 `timezone = GMT+8`、修改 JVM 参数 `-Duser.timezone=GMT+08`,以及使用 `timezone = Asia/Shanghai
60 0
【Java】用@JsonFormat(pattern = “yyyy-MM-dd“)注解,出生日期竟然年轻了一天
|
2月前
|
Java
Java系列之 IDEA 为类 和 方法设置注解模板
这篇文章介绍了如何在IntelliJ IDEA中为类和方法设置注解模板,包括类模板的创建和应用,以及两种不同的方法注解模板的创建过程和实际效果展示,旨在提高代码的可读性和维护性。
|
2月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
37 1
|
2月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
36 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
2月前
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
66 0
下一篇
无影云桌面