try {
String queryString = "select count(model) from Client model";
if (map != null) {
boolean bFirst = true;
Object[] obj = null;
for (Object o : map.keySet()) {
if (bFirst) {
queryString += " where ";
bFirst = false;
} else {
queryString += " and ";
}
obj = (Object[]) map.get(o);
if ("1".equals(obj[1].toString())) {
// 模糊查询
queryString += " model." + o + " like :_" + o;
} else {
// 准确查询
queryString += " model." + o + "=:_" + o;
}
}
}
Query query = getEntityManager().createQuery(queryString);
在Struts中这段查询怎么解释
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- danielinbiti 2015-06-06 15:02关注
try { String queryString = "select count(model) from Client model"; if (map != null) {//map中是条件 boolean bFirst = true; Object[] obj = null; for (Object o : map.keySet()) { if (bFirst) {//如果是第一个条件,则需要拼接where,如果不是第一个,则是拼接and queryString += " where "; bFirst = false; } else { queryString += " and "; } obj = (Object[]) map.get(o); if ("1".equals(obj[1].toString())) {//如果是模糊查询是like,精确查询时等号 // 模糊查询 queryString += " model." + o + " like :_" + o; } else { // 准确查询 queryString += " model." + o + "=:_" + o; } } } 也就是比如 map.put("field1",new String[]{"a","1"}) map.put("field2",new String[]{"b","0"}) 则,原来SQL是 select count(model) from Client model 在field1的时候需要拼接where select count(model) from Client model where 然后是1,则是模糊查询,拼接成 select count(model) from Client model where model.field1 like:_field1 到field2的时候,不是第一个条件,拼接and select count(model) from Client model where model.field1 like:_field1 and 然后是0,精确查询 select count(model) from Client model where model.field1 like:_field1 and model.field2 =:_field2
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能
- ¥15 jmeter脚本回放有的是对的有的是错的
- ¥15 r语言蛋白组学相关问题
- ¥15 Python时间序列如何拟合疏系数模型