为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

5 回答

/*
*换成or的话把1=1换成 1=0 任意一种结果为false的等式
*查birthday的map这么填就行,日期注意加分号
*/
List<Map<String,Object>> params = new ArrayList<Map<String,Object>>();
	Map<String,Object> para = new HashMap<String,Object>();
	para.put("name", "birthday");
	para.put("rela", ">");
	para.put("value","'1991-3-24'");
	params.add(para);
    List<Users> us = d.query(params);


0 回复 有任何疑惑可以回复我~
#1

王之我姓 提问者

非常感谢!
2016-12-22 回复 有任何疑惑可以回复我~
#2

王之我姓 提问者

最后那里的search应该怎么写。我按step来。每次都是新的就是这个每次都执行。没办法保存 Map<String,Object> para = new HashMap<String,Object>();最后sql语句只能出来select * from STUDENTS where 1=1 and null null 5 。
2016-12-22 回复 有任何疑惑可以回复我~
#3

wanttoplay 回复 王之我姓 提问者

没看懂什么意思,上代码
2016-12-23 回复 有任何疑惑可以回复我~
#4

王之我姓 提问者 回复 wanttoplay

lse if (OPERATION_SEARCH.equals(in.toUpperCase())// 按条件查询学生信息 || OPERATION_SEARCH.substring(0, 1) .equals(in.toUpperCase()) || OPERATION_SEARCH.equals(prenious)) { prenious = OPERATION_SEARCH; List<Map<String, Object>> params = new ArrayList<Map<String, Object>>();
2016-12-23 回复 有任何疑惑可以回复我~
#5

王之我姓 提问者

Map<String, Object> st = new HashMap<String, Object>(); if (1 == step) { System.out.println("请输入你想输入的条件S_ID,S_NAME,S_AGE"); } else if (2 == step) { st.put("name", in); System.out.println("请输入你想要的rela 例如 = 和 like"); } else if (3 == step) { st.put("rela", in);
2016-12-23 回复 有任何疑惑可以回复我~
#6

王之我姓 提问者 回复 wanttoplay

System.out.println("请输入输入的条件信息"); } else if (4 == step) { st.put("value", in) params.add(st); try { List<Students> result = action.query(params); for (int i = 0; i < result.size(); i++) { System.out.println(result.get(i).getS_ID() + "号" + result.get(i).getS_NAME()); }
2016-12-23 回复 有任何疑惑可以回复我~
#7

王之我姓 提问者 回复 wanttoplay

} catch (Exception e) { e.printStackTrace(); System.out.println("不存在该学生"); ​} } if (OPERATION_SEARCH.equals(prenious)) { step++; } 每一次进来都会new一下 st导致并不能存储。但是不new一下。就报错。放在if里面也报错
2016-12-23 回复 有任何疑惑可以回复我~
查看4条回复

就是问 query(List<Map<String, Object>> params)

这个方法里的SELECT语句能不能把 AND 改成 OR 

那是不是可以把  " AND " 和 " OR " 像"name" 、"rela" 、"value" 一样一起放在Map中,来选择是 AND 还是 OR,通过map.get("...") 获取AND 或者 OR

这样不用另外写一个方法?

0 回复 有任何疑惑可以回复我~
#1

王之我姓 提问者

你说的是成立的。没有问题。但是什么叫做不用写另一个方法。另一个方法是什么我忘了。不过再次说明。你的想法是可以的。具体实现。你可以试试。不会再问我。
2018-03-13 回复 有任何疑惑可以回复我~

我在想能不能把AND OR也当参数放在Map里?

0 回复 有任何疑惑可以回复我~
#1

王之我姓 提问者

我已经忘记。他问的问题是什么了。你能描述一下吗?我可以给你回答
2018-03-13 回复 有任何疑惑可以回复我~

不需要更改1=1

sql.append("SELECT * from imooc_goddess where 1=1");
if(params!=null&&params.size()>0){
    sql.append(" and (");
    for(int i=0;i<params.size();i++){
        Map<String,Object> map=params.get(i);
        if(i<(params.size()-1))sql.append(" "+map.get("name")+" "+map.get("rela")+" "+
                map.get("value")+" or ");
        if(i==(params.size()-1))sql.append(" "+map.get("name")+" "+map.get("rela")+" "+
                map.get("value")+")");
    }
}


0 回复 有任何疑惑可以回复我~

用or做为条件查询,将sql 的条件改为 1=2 即可

sb.append("select * from imooc_goddess  where 1=2 ");

if(params != null && params.size() > 0)
{
for(int i = 0;i < params.size();i++){
Map<String,Object> map  = params.get(i);
sb.append(" or "+map.get("name")+" " + map.get("rela")+" " +map.get("value"));
}
}


2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师提出的两个问题怎么才能做到呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信