`

查询条件拼接SQL

阅读更多
public static void query() throws ParseException {
		String jsonStr = "{applyNo:{like:'A001'}, name:{=:'张三'}, amt:{>: 600, oper: 'or', <: 1000}}";

		JSONObject json = new JSONObject(jsonStr);

		Iterator<String> iter = json.keys();

		StringBuffer jpql = new StringBuffer("select * from table");

		// 放置参数
		List<Object> params = new ArrayList<Object>();
		int index = 0;
		
		boolean firstFlag = true;
		while (iter.hasNext()) {
			// 查询字段
			String key = iter.next();
			JSONObject obj = json.getJSONObject(key);

			if (firstFlag) {
				firstFlag = false;
				jpql.append(" where ");
			} else {
				jpql.append(" and ");
			}

			jpql.append(key).append(" ");

			Iterator<String> valIter = obj.keys();

			while (valIter.hasNext()) {
				// 查询条件
				String valKey = valIter.next();

				// 不是操作符,就执行
				if (!"oper".equals(valKey)) {

					Object valObj = obj.get(valKey);

					jpql.append(valKey).append(" ?_").append(index).append(" ");

					if (valIter.hasNext()) {
						Object oper = obj.get("oper");
						jpql.append(" ").append(oper).append(" ");
					}
					
					params.add(valObj);
					index++;
				}
			}

		}

		System.out.println(jpql);
		System.out.println(Arrays.toString(params.toArray()));
	}
分享到:
评论

相关推荐

    SQL拼接工具包API 支持Oracle/PostgreSQL/MySql

    简化sql拼接过程,提升开发效率,减少拼接错误。 可以拼接select、update、delete语句以及where条件语句。 拼接where条件可自动组织参数并返回。 支持andEq(), andGt(), andGe(),andLt(), andLe(), andEqDate(), ...

    java将对象以sql条件方式进行拼接

    通过反射,给一个对象,将对象中属性的值,以sql条件方式返回。

    页面传入多个条件——sql语句的拼接

    页面传进来传个条件判断的时候,要用到sql语句的拼接才能解决sql的问题,这是一个小例子。

    SQLServer的性能调优:解决查询速度慢的五种方法

    本文主要通过一下几个方面介绍:使用SQLDMV查找慢速查询、通过APM解决方案查询报告、SQLServer扩展事件、SQLAzure查询性能洞察等相关内容。本文来自博客园,由火龙果软件Anna编辑、推荐。SQLServer的一个重要功能是...

    SqlServer存储过程实现及拼接sql的注意点

    由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。 这里就出现了一个问题,我花费了好久才弄通!  其实就是很简单的一个SQL语句:  update table1 set field1=value1,field2 ...

    QueryBuilder For SqlServer1.0(可视化查询工具)

    QueryBuilder For SqlServer1.0(可视化查询工具)支持拖拽,通过连线处理表之间的关系,可视化添加数据查询条件,支持Excel导出.

    SqlUtils工具类,Sql IN 条件拼接工具类

    NULL 博文链接:https://fanshuyao.iteye.com/blog/2425817

    《kettle中实现动态SQL查询》博客文章示例代码

    通过示例学习kettle动态查询,可以使用问号占位符或命名参数,并详细说明两者的区别。

    CPQuery 解决拼接SQL的新方法

    我一直都不喜欢在访问数据库时... 不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此不拼接SQL还不行。 看到这些缺点,ORM用户可能会认为:使用ORM工具就是终极的解决方案。 是的,

    精通sql结构化查询语句

    SQL查询篇第6章 简单的SELECT语句查询 6.1 查询的基本结构 6.1.1 了解SELECT语句 6.1.2 SELECT语句的语法格式 6.1.3 SELECT语句的执行步骤 6.2 简单的查询语句 6.2.1 查询表中指定的字段 6.2.2 查询所有的字段 6.2.3...

    mybatis动态sqlmybatis动态sqlmybatis动态sql

    其中,动态SQL是MyBatis的一个重要特性,它允许用户根据不同的条件拼接SQL语句,从而实现更加灵活和可扩展的数据库操作。 在MyBatis中,动态SQL使用的主要方式是通过使用XML或注解来编写SQL语句。下面我将简单介绍...

    SqlServer 巧妙解决多条件组合查询

    开发中经常会遇得到需要多种条件组合查询的情况,比如有三个表,年级表Grade(GradeId,GradeName),班级Class(ClassId,ClassName,GradeId),学员表Student(StuId,StuName,ClassId),现要求可以按年级Id、班级Id、学生...

    SQL 多条件查询几种实现方法详细介绍

    以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL 如:我们要有两个条件,一个日期@addDate,一个是@name 第一种写法是 if (@addDate is not null) and (@name &lt;&gt; '') select * from table where ...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    winform树状动态生成SQL无限级where条件语句控件,动态条件

    winform下实现的一个动态无限级的自定义添加SQLwhere条件的控件,显示外观是树状列表,只要你给这控件设置好哪几个字段可以用来拼where,那么运行起来后你可以动态的无限级的添加子and/or等等条件拼接,可以支持生成...

    解决myBatis中删除条件的拼接问题

    Sql语句中,当删除条件并不唯一的时候,我们有两种删除的sql语句,一种使用or拼接where中的条件,例如delete from 表名where 条件1 or 条件2,另一种是使用in 例如delete from 表名where 元素in( ) 利用第一种删除...

    SQL拼接工具包,支持Oracle/PostgreSQL/MySql

    简化sql拼接过程,提升开发效率,减少拼接错误。 可以拼接select、update、delete语句以及where条件语句。 拼接where条件可自动组织参数并返回。 支持andEq(), andGt(), andGe(),andLt(), andLe(), andEqDate(), ...

    mybatis SQL日志解析

    mybatis SQL日志解析;查看日志时mybatis打印的日志查询条件以及参数不是拼接好的,想复制对应sql在本地执行时比较麻烦,通过前端编写页面进行日志解析,拼接sql中的问号以及参数变课轻松实现

    MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据

    在JDBC或其他类似框架中,开发人员通常需要手动拼接SQL语句,这既繁琐又易出错。MyBatis动态SQL则通过标签的形式在XML映射文件中编写,从而避免了手动拼接SQL的麻烦。 MyBatis提供了多种元素来实现动态SQL,如、、...

Global site tag (gtag.js) - Google Analytics