开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
2 Star 0 Fork 3

梁大帅/sqlHandle

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
sqlHandle
/
sqlHandle.java
sqlHandle
/
sqlHandle.java
sqlHandle.java 5.05 KB
一键复制 编辑 原始数据 按行查看 历史
梁大帅 提交于 2013年11月17日 23:33 +08:00 . Update sqlHandle.java
package com.sql.db;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
/**
* sql拼接代码
* 一个完整的sql语句可以有多个sqlHandle拼接而成
* sqlHandle分sql语句 与 sql值,在sql语句中值由?
* 替代在最后运行是值将依此赋值给hibernate
* @author 梁前武
* www.apkplug.com
*/
public class sqlHandle {
public String strSql="%s";
public Object fsql="";
public String type="";
public Object[] v=null;
public List<sqlHandle> list=null;
public sqlHandle(String strSql,Object fsql,String type,Object[] v){
this.strSql=strSql;
this.fsql=fsql;
this.type=type;
this.v=v;
}
public sqlHandle(Object fsql,String type,Object[] v){
this.fsql=fsql;
this.type=type;
this.v=v;
}
public sqlHandle(){
}
public SQLQuery handle(Session session){
//拼接本sqlHandle sql字符串
String sql=addWhereSql(strSql,fsql,type);
for (int i=0;i<list.size();i++) {
//依此拼接子sqlHandle
sqlHandle sqlHandle = (sqlHandle) list.get(i);
sql+=addWhereSql(sqlHandle.strSql,sqlHandle.fsql,sqlHandle.type);
}
System.out.println(sql);
SQLQuery query=session.createSQLQuery(sql);
//赋值
setV(query,0);
return query;
}
/**
* 将sql中?代替的值依此赋值给hibernate
* @param q
* @param i 传递值索引位置
* @return
*/
public int setV(SQLQuery q,int i){
if(v!=null)
for(int j=0;j<v.length;j++){
if(v[j]!=null){
//System.out.println("添加参数");
setV(q,i,v[j]);
i++;
}
}
if(fsql!=null&&fsql instanceof sqlHandle)
i=((sqlHandle)fsql).setV(q, i);
if(list!=null)
for (int j=0;j<list.size();j++) {
sqlHandle sqlHandle = (sqlHandle) list.get(j);
i=sqlHandle.setV(q, i);
}
return i;
}
/**
* 将sql中?代替的值依此赋值给hibernate
* @param q
* @param i 值索引位置
* @param v 值
*/
public void setV(SQLQuery q,int i,Object v){
if(v instanceof String){
q.setString(i, (String)v);
}else if(v instanceof Integer){
q.setInteger(i, (Integer)v);
}else if(v instanceof Float){
q.setFloat(i, (Float)v);
}else if(v instanceof Double){
q.setDouble(i, (Double)v);
}else if(v instanceof Date){
q.setDate(i, (Date)v);
}else if(v instanceof java.sql.Date){
q.setDate(i, (Date)v);
}else if(v instanceof Boolean){
q.setBoolean(i, (Boolean)v);
}else if(v instanceof byte[]){
q.setBinary(i, (byte[])v);
}else if(v instanceof Byte){
q.setByte(i, (Byte)v);
}else if(v instanceof Calendar){
q.setCalendar(i, (Calendar)v);
}
}
/**
* 拼接sql字符串
* @param strSql 连接字符串 如 in(%s)
* @param sqlOne 实体字符串 如 select * user 可以是字符串也可以是sqlHandle
* @param type 连接类型 如 and,or
* @return 返回 如 and in(select * user)
*/
private static String addWhereSql(String strSql,Object sqlOne,String type){
return " "+type+" "+String.format(strSql, sqlOne)+" ";
}
/**
* 添加多个sql参数值
* @param fsql sql语句段 如 name=?
* @param type sql连接类型 如 and
* @param v Object[]{"liming"} 如无值便为null
* @return
*/
public sqlHandle AddMore(Object fsql,String type,Object[] v){
if (list==null)
list=new ArrayList<sqlHandle>();
sqlHandle sql=new sqlHandle(fsql,type,v);
list.add(sql);
return this;
}
/**
* 添加0-1个sql参数
* @param fsql sql语句段 如 name=?
* @param type sql连接类型 如 and
* @param v "liming" 如无值便为null
* @return
*/
public sqlHandle Add(Object fsql,String type,Object v){
AddMore( fsql, type,new Object[]{v});
return this;
}
/**
* 添加多个sql参数值
* 多一共 strSql字符 有时我们需要 in(sql...) 这种情况。
* 我们可以通过设置 strSql=in(%s) fsql=sql... 这种形式来实现
* strSql默认为"%s"
* @param strSql 替代副
* @param fsql
* @param type
* @param v
* @return
*/
public sqlHandle AddMoreAndRep(String strSql,Object fsql,String type,Object[] v){
if (list==null)
list=new ArrayList<sqlHandle>();
sqlHandle sql=new sqlHandle(strSql,fsql,type,v);
list.add(sql);
return this;
}
/**
* 添加多个sql参数值
* 多一共 strSql字符 有时我们需要 in(sql...) 这种情况。
* 我们可以通过设置 strSql=in(%s) fsql=sql... 这种形式来实现
* strSql默认为"%s"
* @param strSql
* @param fsql
* @param type
* @param v
* @return
*/
public sqlHandle AddAndRep(String strSql,Object fsql,String type,Object v){
AddMoreAndRep(strSql, fsql, type,new Object[]{v});
return this;
}
/**
* 生成自身sql语句
*/
public String toString(){
String sql="";
for (int i=0;i<list.size();i++) {
sqlHandle sqlHandle = (sqlHandle) list.get(i);
sql+=addWhereSql(sqlHandle.strSql,sqlHandle.fsql,sqlHandle.type);
}
return sql;
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/liangdas/sqlHandle.git
git@gitee.com:liangdas/sqlHandle.git
liangdas
sqlHandle
sqlHandle
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /