`

枚举反射的应用(sql update语句匹配)

 
阅读更多

枚举反射的应用(sql update语句匹配)

 

protected void update(T o, boolean deleteflag) {
		StringBuilder sd = new StringBuilder("update ");
		String className = o.getClass().getSimpleName();
		if(className.contains("VO")) {
			sd.append(className.toLowerCase().substring(0, className.length()-2)).append(" ");
		}else {
			sd.append(className.toLowerCase()).append(" ");
		}
		sd.append("set ");
		StringBuilder id = new StringBuilder("where ");
		if(deleteflag) {
			id.append("deleteflag=0 and ");
		}
		try {
			for(Method m : o.getClass().getDeclaredMethods()) {
				String name = m.getName();
				if (name.startsWith("get")) {
					sd.append(name.substring(3).toLowerCase()).append("=");
					if(m.invoke(o) instanceof String) {
						sd.append("'").append(m.invoke(o)).append("', ");
					}
					else if(m.invoke(o) instanceof Enum) {
						Class enumClass = m.invoke(o).getClass().getFields()[0].getDeclaringClass();
						if(enumClass.isEnum()) {
							for(Object obj : enumClass.getEnumConstants()) {
								if(((Enum)obj).name().equals(m.invoke(o).toString())) {
									for(Method mEnum : enumClass.getDeclaredMethods()) {
										String enumName = mEnum.getName();
										if(enumName.startsWith("get")) {
											sd.append("'").append(mEnum.invoke(m.invoke(o))).append("', ");
										}
									}
								}
							}
						}
					}
					else {
						sd.append(m.invoke(o)).append(", ");
					}
				}
				if(name.startsWith("primaryGet")) {
					id.append(name.substring(10).toLowerCase()).append("=");
					if(m.invoke(o) instanceof String) {
						id.append("'").append(m.invoke(o)).append("';");
					}else {
						id.append(m.invoke(o)).append(";");
					}
				}
			}
			sd.delete(sd.length()-2, sd.length());
			sd.append(" ");
			sd.append(id);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		System.out.println(sd.toString());
//		executeTrans(sd.toString());
	}

 

或者:

Object myEnum=null;

        Class enumClass=(Class)Class.forName("com.reflectenum.MyEnum");//MyEnum包含CAT,DOG,PIG
        if(enumClass.isEnum()){
            for(Object obj:enumClass.getEnumConstants()){
                if(((Enum)obj).name().equals("DOG")){
                    result=obj;
                }
            }
        }
        System.out.println(result);//将打印出DOG

 

 

 

 

分享到:
评论

相关推荐

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    10.3.3 用SELECT和UPDATE语句进行赋值 10.4 合并数据 10.4.1 MERGE语句基础 10.4.2 额外增加一个谓词 10.4.3 多个WHEN子句 10.4.4 WHEN NOT MATCHED BY SOURCE子句 10.4.5 MERGE Values 10.4.6 MERGE与触发器...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    10.3.3 用SELECT和UPDATE语句进行赋值462 10.4 合并数据465 10.4.1 MERGE语句基础467 10.4.2 额外增加一个谓词470 10.4.3 多个WHEN子句471 10.4.4 WHEN NOT MATCHED BY SOURCE子句472 10.4.5 MERGE Values473 10.4.6...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    10.3.3 用SELECT和UPDATE语句进行赋值462 10.4 合并数据465 10.4.1 MERGE语句基础467 10.4.2 额外增加一个谓词470 10.4.3 多个WHEN子句471 10.4.4 WHEN NOT MATCHED BY SOURCE子句472 10.4.5 MERGE Values473 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例程序  5.7 小结  5.8 思考题 第6章 映射对象标识符  6.1 关系...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例程序  5.7 小结  5.8 思考题 第6章 映射对象标识符  6.1 关系...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例程序  5.7 小结  5.8 思考题 第6章 映射对象标识符  6.1 关系...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     5.1.5 控制insert和update语句  5.2 处理SQL引用标识符  5.3 创建命名策略  5.4 设置数据库Schema  5.5 设置类的包名  5.6 运行本章的范例程序  5.7 小结  5.8 思考题 第6章 映射对象标识符  6.1 关系...

    简单权限模块源码

    简单权限模块源码 程序介绍: 简单权限模块(目前包括可换样式,自定义显示桌面项,菜单查看功能)程序开发中功能尚未完成 ... CreateSql.cs:快速创建insert、update类型的Sql语句 ②. DataModel.cs:快速执行数据库操作

    ASP.NET 3.5 开发大全11-15

    9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除...

    ASP.NET 3.5 开发大全

    9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除...

    ASP.NET3.5从入门到精通

    9.3.1 SQL UPDATE 数据更新语句 9.3.2 使用Command 对象更新记录 9.3.3 使用DataSet 数据集更新记录 9.4 ASP.NET 删除数据 9.4.1 SQL DELETE 数据删除语句 9.4.2 使用Command 对象删除记录 9.4.3 使用DataSet 数据集...

    ASP.NET 3.5 开发大全1-5

    9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除...

    ASP.NET 3.5 开发大全word课件

    9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除...

    asp.net知识库

    直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件表格 获取數据库表的前N条记录 几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle ...

    ASPNET35开发大全第一章

    9.3.1 SQL UPDATE数据更新语句 9.3.2 使用Command对象更新记录 9.3.3 使用DataSet数据集更新记录 9.4 ASP.NET删除数据 9.4.1 SQL DELETE数据删除语句 9.4.2 使用Command对象删除记录 9.4.3 使用DataSet数据集删除...

    数据库相关的知识点!

    一、约束:作用是保证数据的...explain + sql查询语句,用于查询sql执行信息参数 在使用关键字‘like’查询时:like ‘n%’ 走索引;但是like ‘%n%’不走索引,即有且仅只有后面带上%时走索引 使用函数时索引不生效

    Visual C++ 数据库系统开发完全手册.part2

    2.3.5 枚举类型 2.4 控制结构 2.4.1 顺序结构 2.4.2 分支结构 2.4.3 循环结构 2.4.4 转移语句 2.5 函数 2.5.1 函数的定义与调用 2.5.2 默认参数 2.5.3 函数重载概述 2.6 编译预处理指令 2.6.1 #include文件包含指令 ...

Global site tag (gtag.js) - Google Analytics