一段拼装sql的小代码
/**
* 单表查询
*
* 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的小代码的更多相关文章
- Ibatis动态拼装sql,常用标签总结及举栗子。
今天得到项目经理一项任务,就是拼装sql,第一次见到,不是太懂,赶紧回来睡一觉再说,由于这次的项目orm使用的是ibatis框架,所以需要使用动态拼装sql,或者是ognl语言,这门语言不是专属于ib ...
- Sql语句构造类,多字段新增或修改时,拼装sql语句比较方便
using System; using System.Collections.Generic; using System.Text; namespace MSCL { #region 使用示例 /* ...
- editplus 替换换行 excel 表格 拼装sql语句技巧
这样的数据 放到sql中的in 语句中的时候格式需要换行 加上‘,’这样的内容. 操作内容: 用editplus 进行操作.Ctrl+H 查找的地方输入 \n ,替换的地方填写 ',' ...
- JS下高效拼装字符串的几种方法比较与测试代码
在使用Ajax提交信息时,我可能常常需要拼装一些比较大的字符串通过XmlHttp来完成POST提交.尽管提交这样大的信息的做法看起来并不优雅,但有时我们可能不得不面对这样的需求.那么JavaScrip ...
- JS 拼装代码的HTML onClick方法传递字符串
有时会在JS中拼装HTML代码,这时在HTML中出现的onClick()方法中: 1.出现传递Num型的数据,直接拼装进去即可: 2.可能会出现传递字符串的情况,处理方法比较特殊,如下: a:直接字符 ...
- RTSP 消息拼装实例代码
整理了下之前文章提到的RTSP实例的代码,主要是拼装各类消息字段. 首先,抽取一个公共函数,用来根据消息类型,生成不同的format,供sprintf试用. char * GetRTSPCmd( co ...
- 小程序开发笔记【二】,抽奖结果json数据拼装bug解决
抽奖结果数据json格式数据拼接bug,如下图,只发布了两个奖项,每个奖项设置2个奖品,但最后拼接数据的时候出现3个奖项 json数据格式如下 "luckyResult":[ { ...
- 一段小代码秒懂C++右值引用和RVO(返回值优化)的误区
关于C++右值引用的参考文档里面有明确提到,右值引用可以延长临时变量的周期.如: std::string&& r3 = s1 + s1; // okay: rvalue referen ...
- 一行能装逼的JavaScript代码
一行能装逼的JavaScript代码 2016-06-28 野狗 一行神奇的JS代码,当时我就震 惊了,这不就是传说中的ZB神奇么… … 哈哈. 写本篇文章的缘由是之前看到了一段js代码,如下: (! ...
随机推荐
- Entity Framework 数据库先行、模型先行、代码先行
数据库先行(Database First):基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件. 模型先 ...
- 疯狂Android讲义 - 学习笔记(八)
第10章 Service与BroadcastReceiver 10.1 Service简介 Service组件也是可执行的程序,有自己的生命周期,创建.配置Service与创建.配置Activity的 ...
- Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了, ...
- 用R语言的quantreg包进行分位数回归
什么是分位数回归 分位数回归(Quantile Regression)是计量经济学的研究前沿方向之一,它利用解释变量的多个分位数(例如四分位.十分位.百分位等)来得到被解释变量的条件分布的相应的分位数 ...
- [ASP.NET Core] Middleware
前言 本篇文章介绍ASP.NET Core里,用来处理HTTP封包的Middleware,为自己留个纪录也希望能帮助到有需要的开发人员. ASP.NET Core官网 结构 在ASP.NET Core ...
- 把普通对象转换成json格式的对象
1.什么叫做JSON?JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var ...
- css3制作旋转立方体相册
首先让我们来看一下最终效果图: 当鼠标放在图片上是介个样子滴: 是不是觉得很好看?那接下来就一起制作吧! 我个人觉得编程,首先是思路,然后是代码,一起分析一下这个效果的思路. 1.背景颜色,它属于一种 ...
- Bootstrap分为几部分?
Bootstrap分为五部分: (1)起步(Startup) (2)全局CSS样式(Global CSS) (3)组件(Component) (4)插件(Plugin) (5)定制(Customize ...
- iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
iOS 怎么设置 UITabBarController 的第n个item为第一响应者? UITabBarController 里面有个属性:selectedIndex @property(nonato ...
- DVWA安装,ALMP环境搭建以及php版本转换
前言 本文记录DVWA(Damn Vulberability Web App)在虚拟机中安装配置,包括ALMP环境的搭建和php版本的转换. 目录 2. ALMP环境搭建 3. php版本切换 一. ...