/**
* 基础查询语句
* 返回类型的属性字符串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. 网络请求时 返回 App Transport Security has blocked a cleartext HTTP

    如上图,是因为 Xcode7 没有对 plist 进行 http 请求的配置  所致 这时需要  加上上面的plist的红框中 的内容  并且 设置 为 yes  如下图

  2. Spark任务调度流程及调度策略分析

    Spark任务调度 TaskScheduler调度入口: (1)       CoarseGrainedSchedulerBackend 在启动时会创建DriverEndPoint. 而DriverE ...

  3. 禁用USB存储设备(不重启)

    Title:禁用USB存储设备(不重启) -- 2012-09-13 12:08 在win2003实验,USB存储禁止,无需重启! stop usbrw.reg ------------------- ...

  4. PullToRefreshListView组件的OnItemClickListener中的position下标问题

    /** * Pass-through method for {[url=home.php?mod=space&uid=91636]@link[/url] PullToRefreshBase#g ...

  5. 兼容ie6/ff/ch/op的div+css实现的圆角框

    <!DOCTYPE html> <html> <head> <title>青春不迷茫:寻梦时代的“蚁族”逆袭之旅- 职场管理专题-中国人力资源开发网-中 ...

  6. hdu4111 Alice and Bob

    Alice and Bob Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. CSS初始化-KISSY CSS Reset 1.0

    代码 /* KISSY CSS Reset 理念:1. reset 的目的不是清除浏览器的默认样式,这仅是部分工作.清除和重置是紧密不可分的. 2. reset 的目的不是让默认样式在所有浏览器下一致 ...

  8. Oracle_Q&A_04

    2014-12-19作业 [JSU]LJDragon's Oracle course tasks In the first semester, junior year --1.在管理员权限下创建一个新 ...

  9. C语言自动类型转换

    自动转换遵循以下规则: 1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算. 2) 转换按数据长度增加的方向进行,以保证精度不降低.(eg:int型和long型运算时,先把int量转成lo ...

  10. 获取程序中无需释放的ViewController

    AppDelegate.h @property (strong, nonatomic) UIViewController *viewController; 在需要用的地方 #define appDel ...