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); } }); }
相关推荐
使用Spring的JdbcTemplate实现分页功能
jdbcTemplate分页彻底解决,使用游标滚动jdbcTemplate分页彻底解决,使用游标滚动
简单的jdbcTemplate预编译、回调等
主要介绍了使用jdbcTemplate查询返回自定义对象集合代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
Spring jdbcTemplate调用Oracle存储过程返回List集合
JdbcTemplate使用就是JdbcTemplate的使用 再说两遍JdbcTemplate使用就JdbcTemplate的使用 20字够了
JdbcTemplate是一个框架,是用来操作数据库的,有些羡慕就是用JdbcTemplate开发的所有我们有必要去了解
使用Spring的JdbcTemplate调用Oracle的存储过程
最近项目中的工作流需要查询多个数据源的数据,数据源可能是不同种类的:如sql server,oracl等等,一开始是用的配置实现,后来发现在项目运行中,可能需要动态的添加更多不同类型的数据源,所以最终的逻辑是将数据源...
SpringBoot操作多数据源(JPA+JdbcTemplate)使用HikariCP数据源进行示例。
Spring框架JdbcTemplate类中查询方法介绍
Spring的JdbcTemplate插入操作返回主键ID的方法 - - ITeye技术网站
Spring框架中jdbcTemplate 的使用
配制Spring事务和JdbcTemplate使用 配制Spring事务和JdbcTemplate使用
JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。 除了大量...
第一、使用Hibernate 的sql 查询函数,将查询结果对象转为Entity对象。 第二、使用Hibernate Session的getConnection 获得JDBC Connection,然后进行纯JDBC API操作; 第三、选择把Spring的JDBCTemplate作为一种很...
NULL 博文链接:https://summerbell.iteye.com/blog/364702
本资源是一个完整的通过Servlet-Service-Dao-JdbcTemplate访问MySQL数据库的JavaWeb Project,可以直接导入到MyEclipse中进行调试运行,注意默认编译器是JDK1.6。
JDBC已经能够满足大部分用户最基本的需求,但是在使用JDBC时,必须自己来管理数据库资源如:获取PreparedStatement,设置SQL语句参数,关闭连接等步骤。 JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加...