通过反射及注解的运用获取SQL语句
import java.lang.reflect.*;
public class BeanUtil {
//这是拼接查询SQL语句的方法(getDelectSQL)
	public static String getDeleteSQL(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 * Form "+tableName+" ");
	sbsql.append(" Where 1=1 ");
	Field[] fields =classzz.getDeclaredFields();
	for(Field f:fields){
		String methodName="get"+ f.getName().substring(0,1).toUpperCase()+ f.getName().substring(1);
		Method m=classzz.getDeclaredMethod(methodName);
		Object o=m.invoke(obj);
		if(o!=null){
			if(o instanceof String){
				sbsql.append(" And "+f.getName()+"='"+o+"'");
			}else{
				sbsql.append(" And "+f.getName()+"="+o);
			}
		}
	}
return sbsql.toString();
	}
//这是拼接更新SQL语句的方法(getUpdate)
	public static String getUpdate(Object obj) throws IllegalArgumentException, IllegalAccessException{
		Class<? extends Object> classzz=obj.getClass();
		String tableName=classzz.getSimpleName();
		String sql1="Update "+tableName+" Set ";
		String sql2=" ";
		String sql3=" Where ";
		Field[] fields=classzz.getDeclaredFields();
		for(Field f :fields){
			f.setAccessible(true);
			Object value=f.get(obj);
		    //下面IF中的代码表示如果该字段满足PrimaryKey这个注解,则返回true,否则为false
			if(f.isAnnotationPresent(PrimaryKey.class)){
if(value instanceof String){
					sql3 += f.getName()+"='"+value+"'";
				}else{
					sql3 += f.getName()+"="+value+"";
				}
			}else{
				if(value instanceof String){
					sql2 += f.getName()+"='"+value+"',";
				}else{
					sql2 += f.getName()+"="+value+",";
			}
		}
}
		sql2=sql2.substring(0,sql2.length()-2);
		sql1= sql1+sql2+sql3;
		return sql1;
	}
}
通过反射及注解的运用获取SQL语句的更多相关文章
- java注解,通过反射解析注解,模仿hibernate,获取sql语句。
		常用注解: 自定义注解,标准格式: 1,target:注解作用域 2,Retention:声明周期 运行子类继承,但是子类继承只能作用到类注解,字段注解,是继承不了的. 使用注解:通过下面这种方式,为 ... 
- EXPLAIN PLAN获取SQL语句执行计划
		一.获取SQL语句执行计划的方式 1. 使用explain plan 将执行计划加载到表plan_table,然后查询该表来获取预估的执行计划 2. 启用执行计划跟踪功能,即autotrace功能 3 ... 
- C#——反射,自动生成添加的SQL语句
		C#中的反射.是C#中特别重要也是特别神奇的特性,对后面学习框架,了解框架的原理.以及自己写框架,都是必不可少的.学习反射的过程中.总给我一种茅塞顿开的感觉,以前不懂的,现在懂了 反射的介绍:http ... 
- 应用系统如何分析和获取SQL语句的执行代码
		大部分开发人员都有这样一个需求,在程序连接数据库执行时,有时需要获取具体的执行语句,以便进行相关分析,这次我向大家介绍一下通用权限管理系统提供的SQL语句执行跟踪记录,直接先看看代码吧:(这个功能我也 ... 
- java通过反射拿到mybatis中的sql语句并操作
		private static final int MaxBatchLength = 100; public void updateBatch(List<T>list, BaseMapper ... 
- 使用Hibernate 拦截执行sql语句,并输出sql语句,获取sql语句
		重建包名 org.hibernate.type.descriptor.sql 重建类BasicBinder 代码如下 package org.hibernate.type.descriptor.sql ... 
- 使用Java注解开发自动生成SQL
		使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ... 
- Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化
		知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ... 
- iBATIS.net获取运行时sql语句
		[本文原创,第一次离首页如此之近.发在候选区攒攒rp,管理员看着不合适可以撤下.] 虽然只在iBatis的世界里小打小闹匆匆数月,却历经数次与领导和同事激辩,再通过不懈努力学习和开发积累,楼猪终于被它 ... 
随机推荐
- (转)javascript异步编程的四种方法
			本文转自:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html 作者:阮一峰 本文仅仅作为个人mark ... 
- JS学习之路(这个觉得写的很好,放在这里是方便查看)
			总则-都是对象,都是引用 在接触js前用的比较多的是java,在刚开始接触js的时候,老实讲,我是有点崩溃的,相信许多像我一样从后端语言向js转的童鞋们肯定有一样的感受,这玩意儿太灵活了,好像怎么样都 ... 
- MyEclipse配置Tomcat 6
			打开首选项 禁用MyEclipse自带的Tomcat 6 下载apache-tomcat-6.0.29.tar.gz 地址:http://yunpan.cn/cKg6kq2RmjdUB 提取码 98 ... 
- LINUX退出当前进程——比较return、exit()
			1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exi ... 
- 防御病毒邮件得看U-Mail邮件网关
			其实在邮件通讯中,那些病毒.垃圾邮件.钓鱼软件也相当危险,在海量邮件中,你没法确定什么时间.哪一封会发起进攻,攻击的目标都有谁?但是一旦得逞,造成的损失又特别大. 最近美国同行又发现了一个新骗局:美国 ... 
- 发现 git忽略没用
			git rm --cached GuoJiWeb/Properties/PublishProfiles/Profile1.pubxml 
- C# 开源压缩组件比较
			SevenZipSharp check()为检查压缩包,有BUG,360创建的zip压缩包有无密码,密码错对都返回true DotNetZip 提供的函数比较人性化,缺点是只支持zip SharpCo ... 
- JavaScript的继承
			原型继承的实现 1 简化版本 function SuperClass(){...} function SubClass(){...} SubClass.prototype=new SuperClass ... 
- Visio 2007中进行数据库建模时如何显示字段类型以及概念名称
			关于在VISIO中进行数据库建模时如何显示字段类型,以及注释的 1 如何显示字段类型: 在visio菜单上--->点击数据库--->选项--->文档 打开后选择表这项,在上 ... 
- 【转】Oracle Database PSU/CPU
			转自: http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html 1. 什么是PSU/CPU?CPU: Critical Patc ... 
