当前位置: 首页 > news >正文

网站建设类工作描述化妆品网站方案

网站建设类工作描述,化妆品网站方案,公司网站不续费,网站建设需要技术将SQL中的占位符替换成参数 描述 描述 此方法是将SQL中的${}或#{}替换为直接拼接到SQL中或直接替换为?的形式。具体详情看下面代码。 import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** author HuYu* date 2023-09-21* since 1.0**…

将SQL中的占位符替换成参数

  • 描述

描述

此方法是将SQL中的${}或#{}替换为直接拼接到SQL中或直接替换为?的形式。具体详情看下面代码。

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;/*** @author HuYu* @date 2023-09-21* @since 1.0**/
public class Test {public static void main(String[] args) throws Exception {String sql = "SELECT * FROM t_user WHERE id = #{id} AND username =#{username} GROUP BY username ORDER BY id ;";Map<String, Object> params = new HashMap<>();params.put("id", 1);params.put("username", "admin");Map<String, Object> map = replaceSqlPlaceholder(sql, "#{", "}", params);System.out.println(map);}/*** 功能描述:将带有占位符的SQL解析成可执行SQL,openToken传 #{ 则以?占位符方式,openToken传${则采用字符串拼接的方式,* 如果 params 中的参数是数值类型会直接拼接,如果是字符串类型,会填充为 'params.get(key)' 的模式。* @param sql        sql字符串* @param openToken  开始标记token 只能是#{或${* @param closeToken 结束标记 }* @param params     参数map,比如 sql中包含 #{id} ,那么会从该map中查找 key为id的值填充到SQL中作为参数* @return java.util.Map<java.lang.String, java.lang.Object>* @author compass* @date 2024/7/21 12:16* @since 1.0**/public static Map<String, Object> replaceSqlPlaceholder(String sql, String openToken, String closeToken, Map<String, Object> params) {Map<String, Object> resultMap = new HashMap<>();String fill = "#";String placeholder = "$";String type = openToken.contains(fill) ? fill : placeholder;if (sql==null || sql.trim().length()<=0){throw  new IllegalArgumentException("sql 不能为空!");}if (!sql.contains("$") || !sql.contains("#")){resultMap.put("sql",sql);return resultMap;}if ( (sql.contains("$") || sql.contains("#") )&& (params == null || params.size() <= 0)){throw  new IllegalArgumentException("发现SQL中存在占位符 但是 params 中未发现填充参数!");}if (!Arrays.asList("#{","${").contains(openToken)){throw  new IllegalArgumentException("openToken 只能是 #{或 ${!");}if (!"}".equals(closeToken)){throw  new IllegalArgumentException("closeToken 只能是}!");}char[] openTokeChars = openToken.toCharArray();List<Object> dataList = new ArrayList<>();String regx = openTokeChars[0] + "\\\\" + openTokeChars[1] + "([^" + closeToken + "]*)}";regx = regx.replace("\\\\", "\\");Pattern pattern = Pattern.compile(regx);Matcher matcher = pattern.matcher(sql);StringBuffer result = new StringBuffer();while (matcher.find()) {String matcherContent = matcher.group(1);if (placeholder.equals(type)) {Object arg = params.get(matcherContent);String paramValue = "";if (arg instanceof String) {paramValue = "'" + arg + "'";} else {paramValue = arg.toString();}matcher.appendReplacement(result, paramValue);} else {matcher.appendReplacement(result, "?");dataList.add(params.get(matcherContent));}}matcher.appendTail(result);resultMap.put("sql", result.toString());resultMap.put("args", dataList);return resultMap;}
}
http://www.yayakq.cn/news/348270/

相关文章:

  • 各大门户网站用什么做的三星网上商城怎么查物流
  • 网站建设白云北京网线多少钱一年
  • 宝塔如何搭建网站电商打单软件排名
  • 深圳手机网站制作免费建筑设计素材网站
  • 网站服务器租用多少钱一年合适wordpress 图片显示不了
  • 云浮建设网站崇明区建设镇网站
  • 山东省建设监理网站网站cms系统哪个好用吗
  • 做网站公司 陕西渭南如何做网站监控
  • 网站开发有哪些方向wordpress博客注册
  • 嘉兴网站建设公司电话wordpress条件筛选
  • 网站上传 404阿里云腾讯云网站建设
  • 卓老师建站网站后台如何直接登陆宁波模板建站源码
  • 徐州网站建设多少钱wordpress 迷淘
  • 怎么做网站赚大钱石家庄建站程序
  • 高陵网站建设中国500强公司排名查询
  • 杭州微信建站88建网站
  • 网站建设思路方法烟台网站建设企业
  • 长沙做网站优化市场营销师报名官网
  • 廊坊关键词seo排名方案提供常州网站优化
  • 百石网怎么做网站受欢迎的网站建设案例
  • 云南省建设厅标准员网站幼教资源网网站开发策划书
  • 网站建设平台杭州网络管理员需要懂网站建设吗
  • 网站推广的案例工业设计公司名称大全
  • 网站如何添加百度地图上海it公司有哪些
  • 7zwd一起做网店官网网站建设优化论坛
  • python做网站方便吗网站建设步骤详解
  • 唐山建设集团网站建设网站需要几个步骤
  • 做百度网站需不需要备案vs网站开发如何发布
  • 鞍山做网站或建设网站怎么加购物车
  • 登建设厅锁子的是哪个网站wordpress英文版 菜单