/**
* 基础查询语句
* 返回类型的属性字符串Sql
* @author: InkYi
* 修改时间:2016年5月11日 - 上午10:06:00<br/>
* 功能说明:<br/>
* @param clazz
* @return "id,name,sex....."
*/
private String baseSelectSQL(Class clazz){
StringBuffer sb = new StringBuffer();
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible( true );
sb.append(field.getName());
sb.append(", ");
try {
Object object = field.get(clazz);
System.out.println(object.toString());
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
int lastIndexOf = sb.lastIndexOf(", ");
sb.delete(lastIndexOf, sb.length());
return sb.toString();
}
 /**
* 基础条件语句
* 只返回属性不为空的属性和值
* @author: InkYi
* 修改时间:2016年5月11日 - 上午10:52:26<br/>
* 功能说明:<br/>
* @param obj
* @return SELECT & DELETE-->id='0' AND name='inkyi'
*
*/
private String baseWhereSQL(Object obj){
StringBuffer sb = new StringBuffer();
Class<? extends Object> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
try {
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
String name = field.getName();
Object value = field.get(obj);
Class<?> type = field.getType();
if(value!=null){
//处理时间格式
if(type == Date.class){
value = DateUtils.dateStr((Date) value, "yyyy-MM-dd HH:mm:ss");
}
sb.append(name).append("=")
.append("'").append(value).append("'")
.append(" AND ");
}
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
int lastIndexOf = sb.lastIndexOf(" AND ");
sb.delete(lastIndexOf, sb.length());
return sb.toString();
}
 /**
* 基础更新语句
* 只返回属性不为空的属性和值
* @author: InkYi
* 修改时间:2016年5月11日 - 上午11:11:25<br/>
* 功能说明:<br/>
* @param obj
* @return >id='0', name='inkyi', sex='1'
*/
private String baseUpdateSQL(Object obj){
StringBuffer sb = new StringBuffer();
Class<? extends Object> clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
try {
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
String name = field.getName();
Object value = field.get(obj);
Class<?> type = field.getType();
if(value!=null){
//处理时间格式
if(type == Date.class){
value = DateUtils.dateStr((Date) value, "yyyy-MM-dd HH:mm:ss");
}
sb.append(name).append("=")
.append("'").append(value).append("'")
.append(", ");
}
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
int lastIndexOf = sb.lastIndexOf(", ");
sb.delete(lastIndexOf, sb.length());
return sb.toString();
}

根据反射生成SQL语句的更多相关文章

  1. ASP.NET通过反射生成sql语句

    最近对接一个接口,需要通过xml序列化成实体后添加额外信息后批量插入数据库,需要手动拼sql.因为涉及多张表,拼凑很麻烦而且容易出错,所以写了两个工具方法来生成sql,先写到博客里面,以便以后不时之需 ...

  2. 反射生成SQL语句入门

    今天我们来学习学习通过反射技术来生成SQL语句. 反射提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型.然后,可以调用类型的方法或访 ...

  3. 利用反射生成SQL语句

    // 修改学员信息的方法 public bool ModifyStudent(MODEL.Students model) { // 利用反映获取类对所有属性,用来动态生成SQL语句 StringBui ...

  4. 4、注解反射生成SQL语句

    .任务说明         ①有一张用户表,字段包括:用户ID.用户名.昵称.年龄.性别.所在城市.邮箱.手机号:         ②使用java注解来对用户表的每个字段或字段的组合条件进行动态生成S ...

  5. 通过自定义注解反射生成SQL语句

    ----------------------------------------Program.cs---------------------------------------- using Sys ...

  6. C# - 通过自定义注解反射生成SQL语句[转]

    转自http://blog.163.com/jong_cai/blog/static/87028045200902033553581/ -------------------------------- ...

  7. 反射生成SQL语句

    public static int Reg(Model ml) { bool b = true; Visit vt = new Visit(); StringBuilder builder = new ...

  8. 利用反射自动生成SQL语句(仿Linq)

    转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465597.html using System; using System.Colle ...

  9. 模拟Hibernate动态生成SQL语句

    这里有一个xml配置文件,也就是Hibernate框架中会用到的POJO和数据库的映射文件 <?xml version="1.0" encoding="utf-8& ...

随机推荐

  1. DotNET知识点总结三(笔记整合)

    使用接口的注意事项: 接口中的成员不能加访问修饰符 接口中的成员不能有任何实现 实现接口的子类必须实现接口的全部成员 一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口 ...

  2. 模糊集合和隶属度函数--AForge.NET框架的使用(一)

    原文:模糊集合和隶属度函数--AForge.NET框架的使用(一) 什么是AForge.NET? AForge.NET是一个为开发人员和研究人员开发的框架,它可以用于计算机视觉,遗传算法,图像处理,神 ...

  3. COJ 0034 动态的数字三角形

    题解:简单dp吧. 自顶向下的写法: #include<iostream> #include<cstdio> #include<cmath> #include< ...

  4. iOS 9之3D Touch

    金田 北京时间9月10日凌晨, Apple在美国旧金山比尔格拉汉姆公民大礼堂(Bill Graham Civic Auditorium)召开新品发布会.本次着重介绍了3D Touch功能, 大体介绍一 ...

  5. HDU_1174——爆头,空间直线方程,直线到点的距离

    Problem Description gameboy是一个CS高手,他最喜欢的就是扮演警察,手持M4爆土匪的头.也许这里有人没玩过CS,有必要介绍一下“爆头”这个术语:所谓爆头,就是子弹直接命中对方 ...

  6. Codeforces Round #299 (Div. 1)C. Tavas and Pashmaks (凸壳)

    C. Tavas and Pashmaks   Tavas is a cheerleader in the new sports competition named "Pashmaks&qu ...

  7. [LeetCode] 179. Largest Number 解题思路

    Given a list of non negative integers, arrange them such that they form the largest number. For exam ...

  8. [置顶] 白话最小边覆盖总结--附加 hdu1151结题报告

    刚开始看到这个题目的时候就觉得想法很明了,就是不知道如何去匹配... 去网上看了不少人的解题报告,但是对于刚接触“最小边覆盖”的我来说....还是很困难滴....于是自己又开始一如以往学习“最大独立集 ...

  9. css文本样式

    1. body{ color:aqua; /*可继承的颜色*/ text-align: center; /*文本对齐方式*/ } 2.缩进: index.html <!DOCTYPE html& ...

  10. C++ 命名规范小结

    1. #defines and const test.h #ifndef TEST_H #define TEST_H #endif #define FALSE 0 #define TRUE (!FAL ...