文档章节

想增加多个查询条件 该怎么写呢

Star骁北
 Star骁北
发布于 2015/10/15 23:21
字数 388
阅读 3
收藏 0
public List<Goddess> query(List<Map<String,Object>> params) throws Exception{
		List<Goddess> gs=new ArrayList<Goddess>();
		
		 	 Connection conn=DBUtil.GetConnection();
			 StringBuilder sb=new StringBuilder();
			 sb.append(" SELECT * from imooc_goddess where 1=1");
		
			 if(params!=null&&params.size()>0){
				 for (int i = 0; i < params.size(); i++) {
					 Map<String,Object> map=params.get(i);
					 //这样写就很明了  查询什么 关系是什么  值是什么   一下子就清楚了
					 sb.append(" and " + map.get("name")+" "+map.get("rela")+
							" "+ map.get("value"));
				}
			 }
			//会将这个sql语句加载到程序驱动中,但并非真执行。
			 PreparedStatement ptmt= conn.prepareStatement(sb.toString());
			 //查看sql语句
			 System.out.println(sb.toString());			 
			 ResultSet rs=ptmt.executeQuery();			 
			 Goddess g=null;
			 
			 //把查询到的结果集存放到    list的gs对象中
			while(rs.next()){
				g=new Goddess();
				g.setId(rs.getInt("id"));
				g.setUser_name(rs.getString("user_name"));
				g.setAge(rs.getInt("age"));				
				gs.add(g);
			}
		return gs;
	}
public List<Goddess> query(List<Map<String,Object>> params) throws Exception{
		goddessDao gd=new goddessDao();
		return gd.query(params);

	}
package test;


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.imooc.model.Goddess;

import action.GoddessAction;

public class TestAction {
	
	public static void main(String[] args) throws Exception {
		GoddessAction action=new GoddessAction();
		
//		//这是测试单条查询
//		 List<Goddess> gs=action.query("王卡卡");
//		 for(int i=0;i<gs.size();i++){
//		System.out.println(gs.get(i).getAge()+","+gs.get(i).getUser_name());		
//		 }
		
//		//这是测试增加数据
//		Goddess g=new Goddess();
//		g.setUser_name("aalala");
//		g.setSex(1);
//		g.setAge(25);
//		g.setBirthday(new Date());
//		action.add(g);
		
//		//测试 删除数据
//		action.del(1);
		
//		//测试修改数据
//		Goddess g=new Goddess();
//		g.setId(2);
//		g.setUser_name("aalala");
//		g.setSex(1);
//		g.setAge(25);
//		g.setBirthday(new Date());
//		action.alter(g);
		List<Map<String,Object>> params=new ArrayList<Map<String,Object>>();
		
		Map<String,Object> param=new HashMap<String, Object>();
		param.put("name", "user_name");
		param.put("rela", "=");
		param.put("value", "'王卡卡'");
		
		//按照下面这三行的写法  只会查询id  不会查询name了  应该是被覆盖了
		//param.put("name", "id");
		//param.put("rela", "=");
		//param.put("value", "338");

		params.add(param);
		
		 List<Goddess> gs=action.query(params);
		 for(int i=0;i<gs.size();i++){
		System.out.println(gs.get(i).getAge()+","+gs.get(i).getUser_name());		
		 }
		
	}
}


© 著作权归作者所有

共有 人打赏支持
Star骁北
粉丝 0
博文 2
码字总数 890
作品 0
大连
程序员
MySQL数据库之多条件查询索引实现(项目中经常用到)

案例:当我们在进行列表查询的时候,会有很多条件,但并不是所有条件我们都会在一起查询都使用到,也不知道有哪个条件一定会使用,这让mysql的以列的左前綴的索引方式显得有些力不从心,加入...

扬花落尽丶
2017/10/23
0
0
多对多表关联,多条件查询

有三个表 user{id,name} usertogroup{userid,groupid} group{id,name} 可以看出user和group为多对多的关系,用户可以有多个分组 现在有一个搜索功能,有多个group作为条件去查询用户,比如要...

_BiuBiu
2017/09/25
118
5
Android数据库高手秘籍(七)——体验LitePal的查询艺术

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/40153833 经过了多篇文章的学习,我们已经把LitePal中的绝大部分内容都掌握了。现在回想起来了,增删改查四种操作中的前...

sinyu890807
2014/11/13
0
0
oracle的一个分组查询语句,怎么写呢?

下面是农产品信息,共5张表: 市场 MARKET: MARKETID, TOWNID, MARKET_NAME 区县 TOWN: TOWNID, TOWNNAME; 农产品 PRODUCE: PRODUCEID, PRODUCENAME 销售类型 SELLTYPE: SELLTYPEID, SELLTY......

小猫王
2013/08/25
860
1
数据库之分库分表-垂直?水平?

一、数据库瓶颈   不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接...

尜尜人物
08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何通过 J2Cache 实现分布式 session 存储

做 Java Web 开发的人多数都会需要使用到 session (会话),我们使用 session 来保存一些需要在两个不同的请求之间共享数据。一般 Java 的 Web 容器像 Tomcat、Resin、Jetty 等等,它们会在...

红薯
今天
3
0
C++ std::thread

C++11提供了std::thread类来表示一个多线程对象。 1,首先介绍一下std::this_thread命名空间: (1)std::this_thread::get_id():返回当前线程id (2)std::this_thread::yield():用户接口...

yepanl
今天
3
0
Nignx缓存文件与动态文件自动均衡的配置

下面这段nginx的配置脚本的作用是,自动判断是否存在缓存文件,如果有优先输出缓存文件,不经过php,如果没有,则回到php去处理,同时生成缓存文件。 PHP框架是ThinkPHP,最后一个rewrite有关...

swingcoder
今天
1
0
20180920 usermod命令与用户密码管理

命令 usermod usermod 命令的选项和 useradd 差不多。 一个用户可以属于多个组,但是gid只有一个;除了gid,其他的组(groups)叫做扩展组。 usermod -u 1010 username # 更改用户idusermod ...

野雪球
今天
3
0
Java网络编程基础

1. 简单了解网络通信协议TCP/IP网络模型相关名词 应用层(HTTP,FTP,DNS等) 传输层(TCP,UDP) 网络层(IP,ICMP等) 链路层(驱动程序,接口等) 链路层:用于定义物理传输通道,通常是对...

江左煤郎
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部