`
knight_black_bob
  • 浏览: 850876 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 注解 阐释 hibernate ORM

阅读更多

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捐助),没钱捧个人场,谢谢各位。



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

 

 

 

  • 大小: 5.3 KB
分享到:
评论

相关推荐

    hibernate-orm-master.zip

    Hibernate ORM(Object-Relational Mapping)是Java领域中最受欢迎的持久化框架之一,它提供了一种便捷的方式将Java对象映射到关系数据库,从而实现了对象-关系的解耦。"hibernate-orm-master.zip"文件包含了...

    Hibernate ORM - 一对一连接表关联关系

    1. **Hibernate ORM框架**: Hibernate是Java平台上的一个开源ORM框架,它简化了数据库操作,通过将Java对象映射到关系数据库表,使得开发人员可以使用面向对象的方式来处理数据。 2. **一对一关联(One-to-One)**:...

    HibernateORM

    Hibernate作为Java领域广泛使用的ORM框架,它极大地简化了数据库操作,将面向对象的编程思想与关系型数据库相结合,使得开发者可以更加专注于业务逻辑,而不是繁琐的SQL语句。在本书中,作者深入浅出地讲解了如何...

    Hibernate ORM - 一对多双向关联关系

    Hibernate是一个流行的Java ORM框架,它允许开发者用面向对象的方式来操作数据库,避免了传统的SQL语句编写,提高了开发效率。通过ORM,Java对象可以直接映射到数据库表,简化了数据存取。 **一对多关联** 在...

    基于Java的hibernate ORM作业仓库设计源码

    本项目是基于Java的hibernate ORM作业仓库设计源码,包含29个文件,其中包括20个JAR文件、5个Java文件、2个XML文件、1个Gitignore文件和1个Iml文件。这个项目是一个ORM作业仓库,旨在通过Java技术栈实现,提供高效的...

    hibernate-orm-3.2.zip

    Hibernate ORM 是一个强大的Java对象关系映射(ORM)框架,它极大地简化了数据库与Java应用程序之间的数据交互。在“hibernate-orm-3.2.zip”这个压缩包中,包含的是Hibernate 3.2版本的相关文件,这是一个历史悠久...

    Hibernate ORM 新特性之 Service(Registry).

    Hibernate是一个流行的开源对象关系映射(ORM)框架,它允许开发者使用面向对象的编程语言(如Java)来处理数据库操作,从而减轻了数据库操作的复杂性。 在Hibernate ORM 4.0之前的版本中,构建SessionFactory的...

    ORM hibernate。jar包

    在Java领域,Hibernate是一个非常流行且强大的ORM框架,它简化了数据库操作,使开发者可以使用Java对象来处理数据库交互,而无需直接编写SQL语句。 标题提到的"ORM Hibernate .jar包"指的是Hibernate框架的可执行库...

    Hibernate orm 实现原理

    Hibernate orm 实现原理 主要讲解了关于hibernate 的一些知识

    Hibernate ORM 5.3.7.Final User Guide

    Hibernate ORM是一款为Java环境提供的对象/关系映射(Object/Relational Mapping, ORM)解决方案。它主要解决的问题是将对象模型表示的数据映射到关系数据库模型表示的数据,以及将Java数据类型映射到SQL数据类型。...

    Hibernate ORM - 一对多双向组合关联关系

    5. **配置文件或注解**:在Hibernate中,可以使用XML配置文件或Java注解来定义关联关系。XML配置文件中,一对多关联将在`<set>`或`<list>`元素中声明,而在Java类上,我们将使用`@OneToMany`和`@ManyToOne`注解。 6...

    java注解大全(非常全面)

    本资料集合了多种类型的注解,包括普通Java注解、Hibernate注解、Spring注解以及Struts2注解,对学习注解的开发者来说是一份宝贵的资源。 1. 普通Java注解: Java标准库提供了若干内置注解,如`@Override`用于指示...

    Hibernate ORM - 一对多双向连接表关联关系

    1. **Hibernate ORM基础**:Hibernate是一个开源的ORM框架,它提供了一种将Java对象和数据库表之间的映射机制,使得开发者可以在不直接操作SQL的情况下进行数据库操作。 2. **一对多关联**:在数据库设计中,一对多...

    利用java反射、注解及泛型模拟ORM实现

    这篇博文“利用java反射、注解及泛型模拟ORM实现”旨在探讨如何结合这三种技术来实现对象关系映射(ORM),这是一种将数据库表与Java对象之间进行绑定的技术,简化了数据操作。 首先,我们来理解一下这三个概念: ...

    hibernate-orm-4.3.9源码

    Hibernate,作为Java领域中的一款知名对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是数据库交互。本文将基于从Hibernate官网下载的hibernate-orm-4.3.9源码,深入解析其...

    Hibernate ORM 5.2.7.Final User Guide

    Hibernate ORM是Java开发中广泛使用的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作,从而减轻了传统SQL编程的负担。在Hibernate 5.2.7.Final版本的用户指南中,包含了丰富的知识和详细的...

    hibernate-orm-3.3源码

    Hibernate,作为一个强大的对象关系映射(ORM)框架,一直以来都是Java开发者的重要工具。其3.3版本是 Hibernate 的一个重要里程碑,为开发者提供了丰富的功能和优化的性能。本文将针对《hibernate-orm-3.3源码》...

    hibernate-orm-master

    hibernate-orm-master

Global site tag (gtag.js) - Google Analytics