操作符号封装batis

package com.khk.tools.baosight;

import java.util.HashMap;
import java.util.Map;

import com.baosight.iplat4j.core.ei.EiInfo;

public class WatchBXParam {
	private static final String DEFAULT_INPUT_BLOCK="i";
	public static HashMap watchInInfoI0(EiInfo inInfo)
	{
		Map biParams=inInfo.getBlock("i").getRow(0);
		
		return (HashMap) biParams;
	}
	private static final String fs_valueEquals="ve";
	private static final String fs_valueOP="nu";//not used
	private static final String fs_isnull="sn";
	private static final String fs_isnotnull="nn";
	private static final String[][] opMap
	=new String[][]
	  {new String[]{fs_valueEquals,"= ",""}
	  ,new String[]{"ne","<> ",""}
	  ,new String[]{"gt","> ",""}
	  ,new String[]{"ge",">= ",""}
	  ,new String[]{"lt","< ",""}
	  ,new String[]{"le","<= ",""}
	  ,new String[]{"se","='","'"}
	  ,new String[]{"ct"," like '%","%'"}
	  ,new String[]{"nc"," not like '%","%'"}
	  ,new String[]{"sn"," is null ",""}
	  ,new String[]{"nn"," is not null ",""}
	  ,new String[]{"l0","=''",""}
	  ,new String[]{"hl","!=''",""}
	  ,new String[]{"be"," like '","%'"}
	  ,new String[]{"en"," like '%","'"}
	  ,new String[]{"re"," like '","'"}
	  ,new String[]{"in"," in (",")"}
	  ,new String[]{"is"," in ('","')"}
	  };
	//in oracle, '' is null
	//shall add [3] as sign for concatenate or not
	private static final String fssFlag_xmlcolName="_colname";
    private static final String fssFlag_xmlante="_opsignante";
    private static final String fssFlag_xmlvalue="_value";
    private static final String fssFlag_xmlnovalue="_novalue";
    private static final String fssFlag_xmlpost="_opsignpost";
    private static final String fssFlag_xmlconcatenated="_concatenated";
    
    private static final String fss_db_mssql="mssql";
    private static final String fss_db_mysql="mysql";
    private static final String fss_db_oracle="oracle";
    private static final String fss_db_mongodb="mongodb";
    private static final String fss_db_current=fss_db_oracle;
    //WatchBXParam.resolveOPSign(inInfo,"POINT_VALUE1","pointValue1Opsign","pointValue1Query");
	public static void resolveOPSign(EiInfo inInfo,String ps_dbColName,String psop,String ps_criteriaName)
	{
		Object loopSign=inInfo.get("i-0-"+psop);//is null
		Object os_criteria=inInfo.get("i-0-"+ps_criteriaName);
				
		if (loopSign==null)
			return;
		if (fs_valueOP.equals((String)loopSign))
			return;
		String lsopSign=(String)loopSign;
		//"pointValue1_value"  
		//String ls_criteria=(String)os_criteria[0];
		if (fss_db_current.equals(fss_db_oracle))
		{
			//oracle中,空字符串被视作null oracle不支持='',所以改为字符串是否为空
			if (lsopSign.equals("l0"))
				lsopSign="sn";
			if (lsopSign.equals("hl"))
				lsopSign="sn";
			
		}
		for (String[] fls_opsign:opMap) if (lsopSign.equals(fls_opsign[0]))
			{
				inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlcolName, ps_dbColName);
				inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlante, fls_opsign[1]);
				//jdk 1.5 cannot use switch String
				if ("sn,nn,h0,hl".contains(fls_opsign[0]))
					os_criteria="";				
				inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlvalue, os_criteria);
				inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlpost, fls_opsign[2]);
				inInfo.set("i-0-"+ps_criteriaName+fssFlag_xmlconcatenated, ps_dbColName+fls_opsign[1]+os_criteria+fls_opsign[2]);
				return;
			}
	}
	private String parseStrIn()
	{
		String rstr="";
		return rstr;
	}
}
//call example
//WatchBXParam.resolveOPSign(inInfo,"POINT_VALUE1","pointValue1Opsign","pointValue1Query");
//WatchBXParam.resolveOPSign(inInfo,"point_Code","pointCodeOpsign","pointCodeQuery");		

 


<jsp:include page="/WEB-INF/khk/numop.jsp" ><jsp:param name="divid" value="i-0-pointValue1Opsign"/></jsp:include>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<select  name="<%=request.getParameter("divid") %>" id="<%=request.getParameter("divid") %>" >
	<option value="nu">不用</option>
	<option value="ve">值等</option>
	<option value="ne">!=</option>
	<option value="gt">></option>
	<option value="ge">>=</option>
	<option value="lt"><</option>
	<option value="le"><=</option>
	<option value="sn">为空</option>
	<option value="nn">非空</option>		
	<option value="in">in数</option>	
</select>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<select  name="<%=request.getParameter("divid") %>" id="<%=request.getParameter("divid") %>" >
	<option value="nu">不用</option>
	<option value="se">串等</option>
	<option value="ct">包含</option>
	<option value="nc">不含</option>
	<option value="sn">为空</option>
	<option value="nn">非空</option>
	<option value="l0">空串</option>
	<option value="hl">含字</option>
	<option value="be">开头</option>
	<option value="en">结尾</option>
	<option value="is">在组</option>
	<option value="re">正则</option>
</select>

	
	
use example
jsp:	
  		<jsp:include page="/WEB-INF/khk/strop.jsp" ><jsp:param name="divid" value="i-0-pointCodeOpsign"/></jsp:include>
  		<!-- must written in one line -->
		<ehr:text id="i-0-pointCodeQuery" name="i-0-pointCodeQuery" value="${filter.pointCodeQuery}"  width="60px"/>

batis xml:

		<isNotEmpty prepend=" AND " property="pointValue1Query_concatenated">	
			(  $pointValue1Query_colname$ $pointValue1Query_opsignante$ #pointValue1Query_value# $pointValue1Query_opsignpost$ )</isNotEmpty>
			<isNotEmpty prepend=" AND " property="pointCodeQuery_concatenated">
			(  $pointCodeQuery_colname$ $pointCodeQuery_opsignante$$pointCodeQuery_value$$pointCodeQuery_opsignpost$     )</isNotEmpty>
		

使用的时候,本来的定值搜索可以作为范围条件搜索

jsp java xml都只需增加一句话来完成,需要增加两个jsp和一个Java

in还没做好,其他都可以了

SQL Prompt是Red Gate Software公司开发的一款强大的SQL代码编辑和优化工具,主要面向数据库开发者和管理员。版本11.0.1.16766是一个更新版本,它提供了更高效、更便捷的SQL编写环境,旨在提升SQL代码的可读性、效率和一致性。这个安装包包含了所有必要的组件,用于在用户的计算机上安装SQL Prompt工具。 SQL Prompt的核心功能包括自动完成、智能提示、格式化和重构。自动完成功能能够帮助用户快速输入SQL语句,减少键入错误;智能提示则基于上下文提供可能的选项,加快编写速度;格式化功能允许用户按照自定义或预设的编码规范对SQL代码进行美化,提升代码的可读性;而重构工具则可以帮助用户优化代码结构,消除潜在问题。 在描述中提到的“代码格式化规则来源于网络”,指的是用户可以通过下载网络上的json文件来扩展或定制SQL Prompt的代码格式化规则。这些json文件包含了特定的格式设置,如缩进风格、空格使用、注释位置等。将这些文件复制到指定的目录(例如:C:\Users\用户名\AppData\Local\Red Gate\SQL Prompt 10\Styles)后,SQL Prompt会读取这些规则并应用到代码格式化过程中,使得用户可以根据个人偏好或团队规范调整代码样式。 以下几点请注意: 1. 经实测,此版本支持最新的Sql Server 2022版的SSMS21 2. 此安装包中不包括keygen,请自行解决
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值