指定查询条件,查询对应的集合List(单表)
TestDao.java(测试类)
@Test
public void findCollectionByConditionNoPage(){
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
IElecTextService elecTextService = (IElecTextService) ac.getBean(IElecTextService.SERVICE_NAME);
//封装查询条件
ElecText electText = new ElecText();
electText.setTextName("李");
electText.setTextRemark("李");
//在service中组织查询条件,查询结果
List<ElecText> list = elecTextService.findCollectionByConditionNoPage(electText);
if(list!=null && list.size()>0){
for (ElecText text : list) {
System.out.println(text.toString());
}
}
}
ElecTextServiceImpl.java(service层实现类)
//增删改的方法:添加:@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
//查询的方法:不需要添加
/**
* SELECT * FROM elec_text o WHERE 1=1
AND o.textName LIKE '%李%'
AND o.textRemark LIKE '%李%'
ORDER BY o.textDate DESC,o.textName ASC
*/
public List<ElecText> findCollectionByConditionNoPage(ElecText electText) {
//组织查询条件
String condition = "";
List<Object> paramsList = new ArrayList<Object>();//存放'?'对应的可变参量
//名称
String textName = electText.getTextName();
if(StringUtils.isNotBlank(textName)){
condition += " AND o.textName LIKE ?";
paramsList.add("%"+textName+"%");
}
//备注
String textRemark = electText.getTextRemark();
if(StringUtils.isNotBlank(textRemark)){
condition += " AND o.textRemark LIKE ?";
paramsList.add("%"+textRemark+"%");
}
//将paramsList转换成数组
Object [] params = paramsList.toArray();
//排序
Map<String, String> orderby = new LinkedHashMap<String, String>();
orderby.put("o.textDate", "desc");
orderby.put("o.textName", "asc");
List<ElecText> list = elecTextDao.findCollectionByConditionNoPage(condition,params,orderby);
return list;
}
CommonDaoImpl.java(底层方法封装CommonDaoImpl类,Dao层)
//指定查询条件,查询对应的集合List(单表)
/**
* SELECT * FROM elec_text o WHERE 1=1
AND o.textName LIKE '%李%'
AND o.textRemark LIKE '%李%'
ORDER BY o.textDate DESC,o.textName ASC
*/
public List<T> findCollectionByConditionNoPage(String condition,
Object[] params, Map<String, String> orderby) {
String hql = " FROM "+entityClass.getSimpleName()+" o WHERE 1=1 ";
//ORDER BY o.textDate DESC,o.textName ASC
String orderbyHql = orderby(orderby);
String finalHql = hql + condition + orderbyHql;
//执行hql语句
List<T> list = this.getHibernateTemplate().find(finalHql,params);
return list;
}
//解析map集合,获取orderby的排序条件
private String orderby(Map<String, String> orderby){
StringBuffer buffer = new StringBuffer("");
if(orderby!=null && orderby.size()>0){
buffer.append(" ORDER BY ");
for(Map.Entry<String, String> map:orderby.entrySet()){
buffer.append(map.getKey()).append(map.getValue()).append(",");
}
//删除最后一个逗号
buffer.deleteCharAt(buffer.length()-1);
}
return buffer.toString();
}
Service层下orderby.put("o.textDate ", "desc"); 不加空格会报错
错误提示如下:
Caused by: org.hibernate.QueryException: could not resolve property: textDatedesc of: cn.itcast.elec.domain.ElecText [ FROM cn.itcast.elec.domain.ElecText o WHERE 1=1 AND o.textName LIKE ? AND o.textRemark LIKE ? ORDER BY o.textDatedesc,o.textNameasc]
出现错误的代码如下:
//排序
Map<String, String> orderby = new LinkedHashMap<String, String>();
orderby.put("o.textDate", "desc");
orderby.put("o.textName", "asc");
List<ElecText> list = elecTextDao.findCollectionByConditionNoPage(condition,params,orderby);
return list;
转载于:https://www.cnblogs.com/zjiacun/p/4537223.html
指定查询条件,查询对应的集合List(单表)相关推荐
- day01 与MySQL的第一次亲密接触基础查询条件查询
<尚硅谷>MySQL系统课程一共6天,下面介绍第1天的学习内容,主要涉及MySQL的内容介绍.进阶1基础查询和进阶2条件查询.干货满满,跟着课程的进度来的,可能篇幅略长,但是看完一定会有收 ...
- MySQL:单表查询---简单查询+条件查询+高级查询+表和字段取别名
目录 一.通用模版展示 简单查询 条件查询 高级查询 表和字段取别名 二.举例说明 简单查询 条件查询 高级查询 表和字段取别名 三.注意事项 四.Mapper简单举例 简单查询 条件查询 高级查询 ...
- Oracle数据库(一):安装函数查询条件查询
文章目录 1.课程总介绍 Oracle由来&埃里森的身世 为什么学习Oracle 2.Oracle安装与配置 3.正式学习部分 Oracle体系结构 Oracle和MYSQL的差别 SQL的简 ...
- Mysql 拼接多个字段作为查询条件查询方法
最近工作中需要把多个字段拼接作为查询条件查询,特此记录便于日后查阅. <select id="listByProgramCodeList" resultType=" ...
- Database之SQLSever:SQL命令实现的高级案例集合之单表/多表(筛选、统计个数)之详细攻略
Database之SQLSever:SQL命令实现的高级案例集合之单表/多表(筛选.统计个数)之详细攻略 目录 一.sql实现筛选 1.单个表筛选 1.1.简单筛选 1.2.嵌套筛选
- MySQL查询(DQL)之基础查询+条件查询+排序查询
基础查询 1. 查询常量: select 100; 2. 查询表达式 select 100%3; 3. 查询到单个字段 SELECT last_name FROM employees; 4. 查询多个 ...
- MySQL-数据查询操作-基本查询-条件查询-排序查询
文章目录 ==基础查询== 语法.特点.注意事项 案例 ==条件查询== 语法 按条件表达式筛选 按逻辑表达式筛选 模糊查询 ==排序查询== 语法特点 案例 基础查询 案例所使用表字段介绍: 语法. ...
- mySQL学习记录(局域网连接/基础查询/条件查询/常见函数/窗口函数/表连接/子查询/插修删建表)
一些基础概念 DB 数据库 存储数据的容器 DBMS 数据库管理系统 又称数据库软件.产品如mysql/oracle/db2/sqlserver SQL 结构化查询语言 是所有的DBMS都使用的一种D ...
- Oracle 查询技巧与优化(一) 单表查询与排序
前言 作为一个程序员在写SQL时往往注重结果而忽略了本该应用的技巧和更优性能的选择(之前本人一直也是这样),当公司没有一个DBA(据我了解大多数中小公司都是没有的)为我们做SQL优化时那我们理应将SQ ...
- oracle当查询没有输出返回0,[数据库] Oracle单表查询总数及百分比和数据横向纵向连接...
这是最近项目关于SQL语句的,本文简单记录并总结以下几个知识点: 1.如何统计一张表中某个字段的总数,如不同"专业"的学生数及所占百分比: 2.如何联系另一张表进行查询某个字段的总 ...
最新文章
- iOS 带IAP提交注意事项及无法submit for review的解决方案
- 【摩天好课推荐】传统企业数字化转型的困惑、思考与实践
- 妙笔生花:一个易用、高效的文本生成开源库
- 使用Remoting技术
- RocksDB 写入流程详解
- Cloud一分钟 |2018天猫双11结果出炉:2135亿;工信部透露:6G概念研究也在今年启动;英特尔39款至强新处理器曝光...
- Mybatis源码阅读(三):结果集映射3.1 —— ResultSetBuilder与简单映射
- JDBC的第一个版本,不使用配置文件。使用jar文件一个
- 数据结构思维 第十四章 持久化
- 基于JAVA+SpringMVC+Mybatis+MYSQL的社区养老服务网站
- 传智播客毕向东java基础全套视频教程_传智播客毕向东JAVA基础教程全套视频教程(324课)...
- 常见API漏洞解释以及应用层解决方案
- python excel操作 bom_Python Pandas比较BOM表数据
- Web组件的三种关系
- 模式识别应用于哪些领域,模式识别技术的发展是大势所趋
- wyh2000 and pupil
- 无法启动此程序因为计算机丢失d3dx9,无法启动此程序.因为计算机中丢失d3dx9_43.dll.尝试重新安装改程序以解决问题...
- 【BUUCTF】CTF_Crypto 密码学_Quoted-printable(引用可打印)
- 福特汽车是美股电动汽车行业值得投资的股票吗?
- 【本人秃顶程序员】作为字节跳动的研发面试官,有些话我不得不说!
热门文章
- python web自动化测试实验报告_Python:web自动化测试
- java 递归调整为队列
- 【codeforces 534D】Handshakes
- sublime text3下BracketHighlighter的配置方法
- oracle调整Lock_sga参数而不使用虚拟内存
- glomosim仿真的运行过程
- Will not attempt to authenticate using SASL | dubbo项目启动特别慢,拉取 zookeeper 服务日志打印特别慢
- Netty心跳机制-长连接
- mongodb 高级查询 统计记录条数
- WIN2003 X64 系统上安装sql server 2000 的步骤