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拼接过程,提升开发效率,减少拼接错误。 可以拼接select、update、delete语句以及where条件语句。 拼接where条件可自动组织参数并返回。 支持andEq(), andGt(), andGe(),andLt(), andLe(), andEqDate(), ...
通过反射,给一个对象,将对象中属性的值,以sql条件方式返回。
页面传进来传个条件判断的时候,要用到sql语句的拼接才能解决sql的问题,这是一个小例子。
本文主要通过一下几个方面介绍:使用SQLDMV查找慢速查询、通过APM解决方案查询报告、SQLServer扩展事件、SQLAzure查询性能洞察等相关内容。本文来自博客园,由火龙果软件Anna编辑、推荐。SQLServer的一个重要功能是...
由于服务器原因,我不能直接在数据访问层写SQL,所以只好抽离出来放到存储过程里面。 这里就出现了一个问题,我花费了好久才弄通! 其实就是很简单的一个SQL语句: update table1 set field1=value1,field2 ...
QueryBuilder For SqlServer1.0(可视化查询工具)支持拖拽,通过连线处理表之间的关系,可视化添加数据查询条件,支持Excel导出.
NULL 博文链接:https://fanshuyao.iteye.com/blog/2425817
通过示例学习kettle动态查询,可以使用问号占位符或命名参数,并详细说明两者的区别。
我一直都不喜欢在访问数据库时... 不过,有些人可能会说:我的业务逻辑很复杂,Where中的过虑条件不可能事先确定,因此不拼接SQL还不行。 看到这些缺点,ORM用户可能会认为:使用ORM工具就是终极的解决方案。 是的,
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...
其中,动态SQL是MyBatis的一个重要特性,它允许用户根据不同的条件拼接SQL语句,从而实现更加灵活和可扩展的数据库操作。 在MyBatis中,动态SQL使用的主要方式是通过使用XML或注解来编写SQL语句。下面我将简单介绍...
开发中经常会遇得到需要多种条件组合查询的情况,比如有三个表,年级表Grade(GradeId,GradeName),班级Class(ClassId,ClassName,GradeId),学员表Student(StuId,StuName,ClassId),现要求可以按年级Id、班级Id、学生...
以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL 如:我们要有两个条件,一个日期@addDate,一个是@name 第一种写法是 if (@addDate is not null) and (@name <> '') select * from table where ...
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
winform下实现的一个动态无限级的自定义添加SQLwhere条件的控件,显示外观是树状列表,只要你给这控件设置好哪几个字段可以用来拼where,那么运行起来后你可以动态的无限级的添加子and/or等等条件拼接,可以支持生成...
Sql语句中,当删除条件并不唯一的时候,我们有两种删除的sql语句,一种使用or拼接where中的条件,例如delete from 表名where 条件1 or 条件2,另一种是使用in 例如delete from 表名where 元素in( ) 利用第一种删除...
简化sql拼接过程,提升开发效率,减少拼接错误。 可以拼接select、update、delete语句以及where条件语句。 拼接where条件可自动组织参数并返回。 支持andEq(), andGt(), andGe(),andLt(), andLe(), andEqDate(), ...
mybatis SQL日志解析;查看日志时mybatis打印的日志查询条件以及参数不是拼接好的,想复制对应sql在本地执行时比较麻烦,通过前端编写页面进行日志解析,拼接sql中的问号以及参数变课轻松实现
在JDBC或其他类似框架中,开发人员通常需要手动拼接SQL语句,这既繁琐又易出错。MyBatis动态SQL则通过标签的形式在XML映射文件中编写,从而避免了手动拼接SQL的麻烦。 MyBatis提供了多种元素来实现动态SQL,如、、...