/**
* 单表查询
*
* className:实体类的名字
* vals:查询的属性
* pNames:条件的名字
* pVals:条件的值
*/
@Override
public List<Object> get(String className,String[] vals,Object[] pNames,Object[] pVals){
if(StringUtils.isEmpty(className)) {
throw new NullParameterException("实体类的名字没有写");
} StringBuffer hql = new StringBuffer();
if(vals.length != ) {
hql.append("SELECT "); for(int i=; i<vals.length;i++) {
hql.append("p.");
hql.append(vals[i]);
if(i != vals.length-) {
hql.append(", ");
}
}
}
hql.append(" FROM ");
hql.append(className);
hql.append(" p");
if(pNames.length> && pVals.length> && pNames.length==pVals.length) {
hql.append(" WHERE ");
for(int i=;i<pNames.length;i++) {
hql.append(" p.");
hql.append(pNames[i]);
hql.append("=");
hql.append(pVals[i]);
if(i<pNames.length-) {
hql.append(" AND ");
}
}
}
System.out.println(hql.toString());
return null;
}
1. userDao.get("VerificationCode", new String[] {"val1","val2"}, new Object[]{"p1","p2","p3"}, new Object[] {"pv1","pv2","pv3"});
输出:SELECT p.val1, p.val2 FROM VerificationCode p WHERE  p.p1=pv1 AND  p.p2=pv2 AND  p.p3=pv3

 2. userDao.get("VerificationCode", new String[] {}, new Object[]{"p1","p2","p3"}, new Object[] {"pv1","pv2","pv3"});

输出: FROM VerificationCode p WHERE  p.p1=pv1 AND  p.p2=pv2 AND  p.p3=pv3

3. userDao.get("VerificationCode", new String[] {}, new Object[]{}, new Object[] {});

输出:FROM VerificationCode p

 

 4.userDao.get("VerificationCode", new String[] {"p1"}, new Object[]{}, new Object[] {});

 输出:SELECT p.p1 FROM VerificationCode p


/**
* 单表更新操作
*
* className:实体类的名字
* uNames:需要更新的字段
* uVals:更新的值
* wNames:条件字段
* wVals:条件值
* */

public int update(String className,Object[] uNames,Object[] uVals,Object[] wNames,Object[] wVals) {
if(StringUtils.isEmpty(className)) {
throw new NullParameterException("实体类的名字没写");
}
StringBuffer hql = new StringBuffer("UPDATE ");
hql.append(className);
hql.append(" p SET ");
if(uNames.length==uVals.length && uNames.length> && uVals.length>) {
for(int i=;i<uNames.length;i++) {
hql.append("p.");
hql.append(uNames[i]);
hql.append("=");
hql.append("'");
hql.append(uVals[i]);
hql.append("'");
if(i<uNames.length-) {
hql.append(",");
}
}
} if(wNames.length==wVals.length && wNames.length> && wVals.length>) {
hql.append(" WHERE ");
for(int i=;i<wNames.length;i++) {
hql.append("p.");
hql.append(wNames[i]);
hql.append("=");
hql.append("'");
hql.append(wVals[i]);
hql.append("'");
if(i<wNames.length-) {
hql.append(" AND ");
}
}
}
// System.out.println(hql.toString());
return sessionFactory.getCurrentSession().createQuery(hql.toString()).executeUpdate();
}

一段拼装sql的小代码的更多相关文章

  1. Ibatis动态拼装sql,常用标签总结及举栗子。

    今天得到项目经理一项任务,就是拼装sql,第一次见到,不是太懂,赶紧回来睡一觉再说,由于这次的项目orm使用的是ibatis框架,所以需要使用动态拼装sql,或者是ognl语言,这门语言不是专属于ib ...

  2. Sql语句构造类,多字段新增或修改时,拼装sql语句比较方便

    using System; using System.Collections.Generic; using System.Text; namespace MSCL { #region 使用示例 /* ...

  3. editplus 替换换行 excel 表格 拼装sql语句技巧

    这样的数据 放到sql中的in 语句中的时候格式需要换行  加上‘,’这样的内容. 操作内容: 用editplus 进行操作.Ctrl+H    查找的地方输入 \n  ,替换的地方填写 ','   ...

  4. JS下高效拼装字符串的几种方法比较与测试代码

    在使用Ajax提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交.尽管提交这样大的信息的做法看起来并不优雅,但有时我们可能不得不面对这样的需求.那么JavaScrip ...

  5. JS 拼装代码的HTML onClick方法传递字符串

    有时会在JS中拼装HTML代码,这时在HTML中出现的onClick()方法中: 1.出现传递Num型的数据,直接拼装进去即可: 2.可能会出现传递字符串的情况,处理方法比较特殊,如下: a:直接字符 ...

  6. RTSP 消息拼装实例代码

    整理了下之前文章提到的RTSP实例的代码,主要是拼装各类消息字段. 首先,抽取一个公共函数,用来根据消息类型,生成不同的format,供sprintf试用. char * GetRTSPCmd( co ...

  7. 小程序开发笔记【二】,抽奖结果json数据拼装bug解决

    抽奖结果数据json格式数据拼接bug,如下图,只发布了两个奖项,每个奖项设置2个奖品,但最后拼接数据的时候出现3个奖项 json数据格式如下 "luckyResult":[ { ...

  8. 一段小代码秒懂C++右值引用和RVO(返回值优化)的误区

    关于C++右值引用的参考文档里面有明确提到,右值引用可以延长临时变量的周期.如: std::string&& r3 = s1 + s1; // okay: rvalue referen ...

  9. 一行能装逼的JavaScript代码

    一行能装逼的JavaScript代码 2016-06-28 野狗 一行神奇的JS代码,当时我就震 惊了,这不就是传说中的ZB神奇么… … 哈哈. 写本篇文章的缘由是之前看到了一段js代码,如下: (! ...

随机推荐

  1. Entity Framework 数据库先行、模型先行、代码先行

    数据库先行(Database First):基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件. 模型先 ...

  2. 疯狂Android讲义 - 学习笔记(八)

    第10章 Service与BroadcastReceiver 10.1 Service简介 Service组件也是可执行的程序,有自己的生命周期,创建.配置Service与创建.配置Activity的 ...

  3. Java并发编程:线程池的使用

    Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...

  4. 用R语言的quantreg包进行分位数回归

    什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...

  5. [ASP.NET Core] Middleware

    前言 本篇文章介绍ASP.NET Core里,用来处理HTTP封包的Middleware,为自己留个纪录也希望能帮助到有需要的开发人员. ASP.NET Core官网 结构 在ASP.NET Core ...

  6. 把普通对象转换成json格式的对象

    1.什么叫做JSON?JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var ...

  7. css3制作旋转立方体相册

    首先让我们来看一下最终效果图: 当鼠标放在图片上是介个样子滴: 是不是觉得很好看?那接下来就一起制作吧! 我个人觉得编程,首先是思路,然后是代码,一起分析一下这个效果的思路. 1.背景颜色,它属于一种 ...

  8. Bootstrap分为几部分?

    Bootstrap分为五部分: (1)起步(Startup) (2)全局CSS样式(Global CSS) (3)组件(Component) (4)插件(Plugin) (5)定制(Customize ...

  9. iOS 怎么设置 UITabBarController 的第n个item为第一响应者?

    iOS 怎么设置 UITabBarController 的第n个item为第一响应者? UITabBarController 里面有个属性:selectedIndex @property(nonato ...

  10. DVWA安装,ALMP环境搭建以及php版本转换

    前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...