/**
* 单表查询
*
* 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. 疯狂Android讲义 - 学习笔记(七)

    第8章 Android数据存储与IO  Java IO的数据存储可以移植到Android应用开发上来,Android系统还提供了一些专门的IO API. Android系统内置了SQLite数据库,S ...

  2. os模块汇总

    os.name 输出字符串指示正在使用的平台.如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'. os.getcwd() 函数得到当前Python脚本工作的目录路 ...

  3. 第 31 章 项目实战-PC 端固定布局[5]

    学习要点: 1.底部区域 2.说明区域 3.版权及证件区 主讲教师:李炎恢 本章主要开始使用学习用 HTML5 和 CSS3 来构建 Web 页面,第一个项目采用 PC 端固定布局来实现. 一.底部区 ...

  4. [注意]SerialPort操作PCI-1621D多串口卡,出现异常"参数不正确"

    开发LED大屏显示.40-20mA模拟量输出的时候,经常要与串口打交道.但是Windows自带的SerialPort串口操作组件貌似兼容性 不是太好,或是SerialPort本身有BUG,在操作PCI ...

  5. JSTL标签功能集锦

    1.<fmt:parseNumber integerOnly="true" value="2/3" /> 结果为0 功能:fmt:parseNumb ...

  6. S1java基础学习笔记

    第一章  Java基础 程序目标:减轻现实生活中一类人的工作量,提高工作效率. 学员最终可以书写系统: 超市管理系统,POS机系统等 入库单 销售单 01.课程重点 五大重点: 01.分支(选择)结构 ...

  7. Tomcat源代码-门面模式(Facade)

    从Tomcat源码提炼出设计模式-门面设计模式: 概念 外部访问内部,耦合度增加,不利于扩展.而门面模式在内部基础上进行再度封装,只提供外部想要的方法.这时访问方式由“外部---内部”变为了“外部-- ...

  8. javascript封装与多态的体现

    封装是实现面向对象程序设计的第一步,封装就是将数据与函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型. 在传统的面向对象语言中有访问修饰符,如Private:只有类本身能 ...

  9. HTML5学习笔记四 HTML文本格式化

    HTML 格式化标签 HTML 使用标签<b> 与<i> 对输出的文本进行格式, 如:粗体 or 斜体 这些HTML标签被称为格式化标签 通常标签 <strong> ...

  10. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q141-Q143)

    Question  141 You are planning an upgrade to a SharePoint 2010 application. You have the following r ...