sql关于对一个字段同时满足多条件判断来筛选查询

表所有数据

查询userName为abc或xyz的


以下为本菜鸟项目中遇到的问题:

背景:

/**
 * wangjie 180629
 * 
 * 学生需要查询四种可能的消息
 * 1.班级管理员发来的,根据自身的学籍号条件查询
* 2.省级管理员发送区县全部的,根据接收对象地区号作为条件查询
 * 3.省级管理员发送全省全部的,根据接收对象类型为"all"查询
 * 4.省级管理员发送全市全部的,根据接收对象市id查询
 * 
 * */

例子

问个sql语句问题,比如如何查出

name为小红的

或者

name为小黑并且sex为男的

以上两个条件拼接一条语句写出来 

	/**
	 * 接收到的学习纪实--分页
	 * @param pageNumber
	 * @param pageSize
	 * @param map
	 * @return
	 */
	@Override
	public Pagenate<StudyRecordTableEntity> pageforAcceptStudyTableEntity(
			int pageNumber, int pageSize, Map<String, String> map) {
		
		
//		map传过来的值:{classCode=5051, acceptcode=15040602011, titles2=, role=03, pointId=0482, cityCode=3704, classAdminCode=null, ydrq12=, ydrq22=}
		// TODO Auto-generated method stub
		String titles2=map.get("titles2");		//标题
		String ydrq12=map.get("ydrq12");		//开始日期
		String ydrq22=map.get("ydrq22");		//结束日期
		String acceptcode=map.get("acceptcode");//接收人编号
		
		/**
		 * wangjie 180629
		 * 
		 * 学生需要查询四种可能的消息
		 * 1.班级管理员发来的,根据自身的学籍号条件查询
		 * 2.省级管理员发送区县全部的,根据接收对象地区号作为条件查询
		 * 3.省级管理员发送全省全部的,根据接收对象类型为"all"查询
		 * 4.省级管理员发送全市全部的,根据接收对象市id查询
		 * 
		 * */
//		接收区县---区县id
		String point_id = map.get("pointId");
//		接收市id
		String city_id = map.get("cityCode");
		Session session = super.getHibernateTemplate().getSessionFactory().getCurrentSession();
		StringBuffer sb=new StringBuffer();
		
		// 学员接收信息
		sb.append(" from StudyRecordTableEntity srt,StudyRecAcceptRoleEntity accept,SysAccCount account where srt.id=accept.sturec_code and account.accCode=srt.sendopt ");
		sb.append(" and accept.accrole='03' and srt.flag='1' ");
		sb.append(" and (  accept.send_type='single' and ( accept.accept_range like '%"+acceptcode+"%' or accept.accept_range like '%"+point_id+"c%' or accept.accept_range like '%"+city_id+"%' ) ");
		sb.append(" or accept.send_type='all' ) ");
		
		if(titles2!=null&&!"".equals(titles2)){
			sb.append(" and srt.titles like '%"+titles2+"%' ");
		}
		if(ydrq12!=null&&!"".equals(ydrq12)){
			sb.append(" and srt.sdate >= '"+ydrq12+"' ");
		}
		if(ydrq22!=null&&!"".equals(ydrq22)){
			Calendar calendar=new GregorianCalendar();
			calendar.setTime(DateUtils.parseDate(ydrq22, "yyyy-MM-dd"));
			calendar.add(calendar.DATE, 1);
			sb.append(" and srt.sdate < '"+DateUtils.formateDate(calendar.getTime(), "yyyy-MM-dd")+"' ");
		}
		String hqlCnt="select count(0) "+sb.toString();
		String hql="select srt "+sb.toString()+" order by srt.sdate desc,srt.sturec_type asc ";
		System.out.println("拼接的sql---->"+hql);
		Query queryCnt=session.createQuery(hqlCnt);
		Query query=session.createQuery(hql);
		return super.findByPage(pageNumber, pageSize, queryCnt, query);
	}

后台是hql语句查询的,刚开始没想起来,急的我差点写四个sql分别查询

一个同胞的:

原文地址:https://www.cnblogs.com/wjup/p/10576104.html