一段拼装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代码,如下: (! ...
随机推荐
- nodejs 返回html页面--使用 ejs 模板
nodejs 可以直接在返回中使用html标签,例如下面的格式,返回 hello world 将会使用 h1 字体. app.get('/html',function(req,res){ res.st ...
- 在Intellij IDEA 下通过Maven新建项目的一些体会
因为习惯的原因,一直在用jetbrain的IDE,最近的在开发javaEE项目,并尝试用maven来管理依赖,那这中间又出了什么让我不得不写下来的呢 一.先来看看在IDEA下怎么用maven建项目 1 ...
- Cats(4)- 叠加Free程序运算结果,Stacking monadic result types
在前面的几篇关于Free编程的讨论示范中我们均使用了基础类型的运算结果.但在实际应用中因为需要考虑运算中出现异常的情况,常常会需要到更高阶复杂的运算结果类型如Option.Xor等.因为Monad无法 ...
- Java03
字符输入 Scanner scan = new Scanner(System.in); char ch = scan.next().charAt(0); 车到路口例 package C ...
- Lind.DDD.API核心技术分享
回到目录 关于Lind.DDD框架里API框架的技术点说明 讲解:张占岭 花名:仓储大叔 主要框架:Lind.DDD 目录 关于Lind.DDD.Authorization 关于授权的原理 关于Api ...
- Docker化运维方式讲解
应用迁移需求 应用运维需要考虑的一个重要问题就是迁移, 在不同机器.机房.环境间迁移.迁移的原因有很多, 比如硬件过保(硬件故障), 机房迁移, 应用扩缩容等. 应用迁移的核心需求是: 简单.迁移操作 ...
- 《C#微信开发系列(4)-接收 / 返回文本消息》
4.0接收 / 返回文本消息 ①接收/返回文本消息原理说明 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,着手开发之前先行阅读微信公众平台接收普通消息 ...
- .NET 数据类型转换 方法
using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System.Web.Script.Serialization; /// &l ...
- Linux2.6内核--进程调度理论
从1991年Linux的第1版到后来的2.4内核系列,Linux的调度程序都相当简陋,设计近乎原始,见0.11版内核进程调度.当然它很容易理解,但是它在众多可运行进程或者多处理器的环境下都难以胜任. ...
- Solr 4.0 部署实例教程
Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为H ...