使用JdbcTemplate获取多表查询结果集并返回json数组

Spring中,JdbcTemplate的query方法的参数中实现RowMapper接口,可以将查询结果的每行映射为数据库表对应的EntityBean,并最终返回List<EntityBean>,这个属于基本运用,但实际应用往往是多表查询返回的结果集并非可以直接映射为表的实体类;另,jsp页面使用ajax返回结果为json字符串处理起来相对方便;下面记录一下sping JdbcTemplate多表查询结果处理为json字符串并在页面展现。

 

1,JdbcTemplate DAO

两表连接查询,获取结果集为List<Map>,方便处理为json数组

@Repository
public class DAOJdbcTemplate {
	private static Logger log =  Logger.getLogger(DAOJdbcTemplate.class.getName());
	
	private JdbcTemplate jdbctemplate;
	
	@Autowired
	public void setDataSource(DataSource dbcp2datasource){
		this.jdbctemplate = new JdbcTemplate(dbcp2datasource);
	} 
		
	public List getInfoList(String pubday, String title){//
		StringBuffer sql = new StringBuffer();
		List lst = null;

		sql.append("select t.title as title, t.pubday as pubday, u.name as name from info left join user on t.puber=u.id where 1=1 ");
		if(null != pubday && !"".equals(pubday)){
			sql.append("and t.pubday='"+ pubday +"' ");

		}
		if(null != title && !"".equals(title)){
			sql.append("and t.title like '%"+ title +"%' ");

		}
		sql.append("order by t.optime desc ");		
		
		lst = this.jdbctemplate.query(sql.toString(),new RowMapper<Map<String,String>>(){

			@Override
			public Map<String,String> mapRow(ResultSet rs, int index) throws SQLException {
				
				Map<String,String> mp = new HashMap<String,String>();
				mp.put("title", rs.getString("title"));
				mp.put("pubday", rs.getDate("pubday").toString());
				mp.put("name", rs.getString("name"));					
				return mp;
			}			
		});
		
		return lst;
		
	}

}

 2,Controller中处理结果返回json响应

	@ResponseBody
	@RequestMapping(path="/querybyparam",method={RequestMethod.POST})
	public void getlistbyparam(@RequestParam(name="pubday") String pubday, @RequestParam(name="title")  String title, 
			HttpServletRequest request, HttpServletResponse response){		
		
		try {			
			log.info("pubday: "+ pubday + ", title: "+ title);			
			List lst = commonimpl.getInfoList(pubday,title);			
			log.info(lst);			
			JSONArray jsn = JSONArray.fromObject(lst);			
			response.getWriter().print(jsn);			
			return;
			
		} catch (IOException e) {
			log.info(e.toString());
		}		
		
	}

 3,页面请求、响应处理、返回结果展现

	function query(){
		
		$.ajax({
			url:'info/querybyparam',
			dataType:'json',
			type:'post',
			cache:false,
			data:{'pubday':$('#tonggaoid').val(),'title':$('#tonggaotitle').val()},
			success:function(data){
				var html = '';
				$.each(data,function(index,elem){					
					html += '<tr>';
					html +='<td style="width:10%;font-weight: bold;text-align: center;">'+ (index+1) +'</td>';
					html += '<td style="width: 40%;text-align: center;">'+ elem.title +'</td>';
					html += '<td style="width: 25%;text-align: center;">'+ elem.pubday+'</td>';
					html += '<td style="width: 25%;text-align: center;">'+ elem.name +'</td>';
					html += '</tr>';					
				});
				$('#datatable').append(html);
			},
			error:function(XMLHttpRequest){
				alert(XMLHttpRequest.responseText);
			}
			
		});
		
	}

 

 

 

 

 

 

JdbcTemplate实操查询数据库表中所有记录信息(十六课) 查询操作 阅读详情

相关推荐

小米汽车技术路线

从小米的电子电器架构来看,行业内EEA已经由域集中逐渐过度到域融合+区域控制的架构并向着中央计算+区域控制的方向发展。 而小米汽车智驾算法也从基于高精地图模块化架构,到去高精地图模块化架构,再到端到端架构,这也正是行业对于智驾算法演进的共识。

HITbingdu的博客 3785

java jdbc template 查询返回 JSONObject的方法

javajdbctemplate查询返回JSONObject的方法。

走错路的程序员 1812

CCS配置MSPM0G3507(七) 编码器(TIMER-QEI)

1.选择时钟源 BUSCLK2.时钟分频配置为1分频3.分频系数配置为14.若勾选 Start ,则生成程序后会自动开启定时器的计数,否则需手动在程序中开启5.Load Value 设置为65535。

kaneki_lh的博客 1万+

JdbcTemplate设置返回多个结果集

对于我们使用JdbcTemplate时想要获取多个结果集而无从下手的问题我从百度也搜到了一些答案,但是使用起来不是我预想的那个结果,所以我就借鉴别人的对自己所使用的的进行了一些小改动。代码如下: private List<Map<String, Object>> getMultiDataSet( String sql) { return jdbcTemplate.execute(sql, (CallableStatementCallback<List<Map&

qq_45777661的博客 1525

体素坐标(voxel_coors)在mmdetection3d中的理解

体素坐标(voxel_coors)在mmdetection3d中的理解

weixin_38362784的博客 4217

当传统CFD遇上AI:PINN如何帮我们省下90%的仿真计算时间?

本文探讨了物理信息神经网络(PINN)在计算流体力学(CFD)中的应用,如何通过无网格方法节省90%的仿真计算时间。PINN将物理定律编码到神经网络中,显著减少传统CFD中的网格生成和计算时间,同时保持高精度。文章还对比了PINN与传统方法的性能,并讨论了其独特优势和当前局限。

weixin_32678995的博客 320

JdbcTemplate(操作数据库-查询返回对象、查询返回集合)

目录 JdbcTemplate(操作数据库-查询返回对象) 1.创建数据库 2.新建实体类: 3.创建dao层 4.创建service类 5.xml配置 6. 测试类 7.测试结果: JdbcTemplate(操作数据库-查询返回对象) 1.创建数据库 数据库中有三条记录,数据库名为user_db,数据库表为t_book 2.新建实体类: Book类中的每一个属性对应数据库中的一条记录 package org.example.spring.entit...

LBJ8888888的博客 6969

86、高斯过程:学习、应用与自动相关性确定

本文介绍了高斯过程回归的基本原理及其在实际应用中的关键技术,重点探讨了通过最大化对数似然函数来学习模型超参数的方法,并详细阐述了自动相关性确定(ARD)技术如何用于评估输入变量的重要性。文章涵盖了从协方差函数定义、梯度计算到优化算法的应用流程,并通过流程图和表格形式总结了核心步骤与公式。此外,还讨论了贝叶斯处理方式及异方差问题的建模策略,展示了高斯过程在复杂数据建模中的灵活性与强大能力。

android的专栏 114

jdbcTemplate进行CRUD,查询结果转json

通过Spring的jdbcTemplate作为dao层的框架,将获取到的字段名,及其值,通过put放在jsonObject或jsonArray中,将json返回。 public class SpringJdbcService { private static Logger logger = LoggerFactory.getLogger(SpringJdbcServi...

weixin_30485799的博客 837

【部署】OpenClaw版本降级实操(含全量卸载)

本文详细介绍了OpenClaw工具的降级与卸载方法。主要内容包括:1)通过npm安装指定版本的核心命令及国内镜像加速方案;2)两种卸载路径:CLI工具存在时的简易一键卸载(含交互式与非交互式命令)和手动分步卸载流程;3)CLI已删除但服务仍在运行时,针对macOS(launchd)、Linux(systemd)和Windows(计划任务)系统的具体清理步骤。文章特别强调了卸载前备份的重要性,并提供了不同安装方式(常规安装与源码克隆)的额外说明,确保用户能彻底清理所有组件。

海兰 3172

用 XCO 库一键找出某个 ABAP 类的全部子类

ABAP XCO库子类枚举技术解析 本文介绍了在ABAP项目中如何利用XCO库高效获取类的继承层次结构。传统方法使用CL_ABAP_CLASSDESCR或手动维护映射表存在效率低、易遗漏的问题。新方法通过XCO库的IF_XCO_AO_CLASS接口,可简洁地获取父类的所有子类(包括间接子类)。 核心API链式调用: 获取类句柄:xco_cp_abap=>class() 导航子类集合:subclasses->all 获取结果:get()返回类引用表或get_names()返回类名列表 典型应用场景

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 127

JdbcTemplate查询返回JavaBean的几种方法

关于JdbcTemplate的官方描述如下: org.springframework.jdbc.core.JdbcTemplate 大约的讲,将JdbcTemplate返回的list结果集生成JavaBean我找到四种方式,都还不错。 本例比较特殊,该JavaBean里面包含一个child属性,该属性类型为List,见代码,而查询父子的SQL及需要的结果完全不同。 见代码...

dianmie4090的博客 225

深度学习论文: Towards Total Recall in Industrial Anomaly Detection

在大规模工业制造中,能够准确检测出有缺陷的零件至关重要。我们在这项工作中面临的一个特殊挑战是冷启动问题:仅使用正常的示例图像来训练模型。虽然可以针对每个类别手动设计解决方案,但我们的目标是构建能够自动适用于多个任务的系统。最佳的方法是将ImageNet模型的嵌入特征与异常检测模型结合起来。在本文中,我们在这一研究基础上进行了扩展,并提出了PatchCore,它利用了一个具有最大代表性的正常补丁特征内存库。通过这种方法,我们能够更好地解决冷启动问题,并提高系统在多任务上的性能。

mingo_敏 1875

JdbcTemplate查询并映射为实体类

JdbcTemplate查询并映射为实体类

weixin_45623983的博客 453

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Spring JdbcTemplate 查询结果集Map反向生成Java实体

以前写过一篇文章吐槽过

枯鸦专栏 2万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

spring boot jdbcTemplate简单查询的使用

本文参考自:https://blog.youkuaiyun.com/chenyezhou1/article/details/71122570 (1)基础的查询操作,因为jdbcTemplate不像mybatis那种有对应的映射关系,因此操作实体,需要手写函数 class UserRowMapper implements RowMapper<User> { publ...

zhaoyy0513的博客 1094

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jdbctemplate查询数据封装到json

String sql="select * from ods.dat_dcsj_time where rownum <10"; List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql); Map<String...

adaadadsa的博客 2422

Controller层执行SQL查询并返回结果

每天一个入坑小技巧

test 1068

Spring JdbcTemplate 查询结果集Map反向生成Java实体(转)

原文地址:Spring JdbcTemplate 查询结果集Map反向生成Java实体 以前写过一篇文章吐槽过Spring JdbcTemplate的queryForList方法(参见:http://blog.youkuaiyun.com/will_awoke/article/details/12617383),因为这个方法只支持单数据类型泛型实体,而想返回自定义实体时还得自己写callba...

dianmie4090的博客 165

Spring+Servlet 读取数据库并返回json数据到前端(java后端实践)

Spring简介: Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。 图 1. Spring 框架的 7 个模块 Spring 框架图示   组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器:核心容...

Yfw的博客 4850

spring内jdbcTemplate.queryForList(sql)查询返回数据包含Timestamp类型、HttpMessageNotWritableException异常处理

spring内jdbcTemplate查询列表Timestamp类型返回前端为时间戳、及org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer. 一、jdbcTemplate

weixin_43418984的博客 2126

Spring JDBCTemplate 实战大全:从 CRUD 到高级技巧,一篇搞定!(应用篇一)

📌 还在为 Spring JDBCTemplate 的操作发愁?本文为你揭秘所有核心用法!从基础的增删改查(CRUD)到多表关联、分页查询、流式处理、动态 SQL、批处理优化,再到存储过程调用和数据库元数据操作,一网打尽! ✨ 亮点内容: ✅ 高效查询:分页、多表关联、复合主键、复杂条件动态构建 ✅ 性能优化:流式处理大数据、自适应批处理、避免内存溢出 ✅ 高级技巧:JSON 字段处理、乐观锁实现、存储过程调用 ✅ 实战代码:每个技巧均附完整示例,即学即用!

肖哥弹架构博客 998

jdbcTemplate 查询

1.jdbcTemplate.queryForObject 返回的单行单列的数据。相当于查询数据有多少列。String Sql=select count(*) count from S_JFLHHMD jflhndcsid=? String forObject = jdbcTemplate.queryForObject(Sql, String.class(Integer,class), jfl

zcouy的博客 2913

js获取从后台返回JSONArray数据

最近学习springmvc通过 jdbcTemplate.queryForList(sql)方法从数据库中获取所有数据, 然后转换为JSONArry格式 List list = jdbcTemplate.queryForList(sql); JSONArray jsonList = JSONArray.fromObject(list);通过modelAndView.addObject("us

huanfengcheng的专栏 8823
上一篇: ubuntu下用nginx作反向代理
下一篇: Python安装pip设置HTTP代理下载第三方库之类
johnsearcher
博客等级 码龄17年 12粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值