2019独角兽企业重金招聘Python工程师标准>>>

一.简介

sql中返回的是自定义的列或者一些统计的列,直接用hibernate无法处理;

此时,可以使用RowMapper,将数据中的每一行数据封装成用户定义的类

二.RowMapper

1、方法:

建立内部类实现RowMapper接口;

RowMapper中有一个mapRow方法,所以实现RowMapper接口一定要实现mapRow方法;

对自定义类的包装就在mapRow方法中实现.

2、例子:

public class TestDao {
private JdbcTemplate jt;
public void setJt(JdbcTemplate jt) {this.jt = jt;
}
public List<TNpc> getAll(){String sql = "select * from t_npc";//使用List list = jt.query(sql, new NpcRowMapper());return list;
}
/**
* 定义内部类实现RowMapper接口
*/
public class NpcRowMapper implements RowMapper{//实现mapRow方法public Object mapRow(ResultSet rs, int num) throws SQLException {//对类进行封装TNpc npc = new TNpc();npc.setId(rs.getLong("id"));npc.setName(rs.getString("name"));return npc;}  }
}

三.相同效果的其他方法:map映射

用map映射相对rowMapper更简单,且无需建接口

List<Object> args = new ArrayList<Object>();
args.add(before);
args.add(today);
//sql获取需要的统计字段
String sql = "select cur_week_answer_count,cur_week_answer_score from t_answer where create_time>? and create_time<? and is_best_answer!=1";
//queryForList,然后把获取到的数据放到map中
List<Map<String,Object>> ids = EnvUtils.getEnv().getSimpleJdbcTemplate().queryForList(sql.toString(), args.toArray());
if(ids != null && !ids.isEmpty()){
for(Map<String,Object> map : ids){
//从map中获取数据
long answerCount = Long.parseLong(String.valueOf(map.get("cur_week_answer_count")));
long answerScore = Long.parseLong(String.valueOf(map.get("cur_week_answer_score ")));
Answer answer = answerService.load(answerCount,answerScore);
Question question = answer.getQuestion();
if(answer != null && question != null && answer.getId() == question.getBestAnswerId()){
qustionRaltionZhidaoService.setBestAnswerToZhidao(answer);
}
}
}

转载于:https://my.oschina.net/xsh1208/blog/176507

spring中的RowMapper相关推荐

  1. Spring中的RowMapper接口的作用

    Spring中RowMapper接口的作用: 用来把数据库中的列字段和java bean中属性对应上,这样就可以赋值了 sping中的RowMapper可以将数据中的每一行数据封装成用户定义的类. 我 ...

  2. Spring中JdbcTemplate中使用RowMapper

    转自:https://blog.csdn.net/u012661010/article/details/70049633 1 sping中的RowMapper可以将数据中的每一行数据封装成用户定义的类 ...

  3. Spring中的JDBC操作

    一.Spring模板JdbcTemplate 为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架JdbcTemplate. 作 ...

  4. Spring中使用JDBC

    首先要获得DataSource连接池: 要对数据库执行任何的JDBC操作,需要有一个Connection.在Spring中,Connection对象是通过DataSource获得的. 有几种方法可以得 ...

  5. 在Spring中使用JDBC访问关系数据

    在Spring中使用JDBC访问关系数据 本指南将引导您完成使用Spring访问关系数据的过程. 你会建立什么 您将构建一个使用Spring JdbcTemplate访问存储在关系数据库中的数据的应用 ...

  6. Spring中的事务控制

    Chapter 1. Spring中的事务控制(Transacion Management with Spring) Table of Contents 1.1. 有关事务(Transaction)的 ...

  7. Spring中的事务控制(Transacion Management with Spring)

    1.1. 有关事务(Transaction)的楔子 1.1.1. 认识事务本身1.1.2. 初识事务家族成员 1.2. 群雄逐鹿下的Java事务管理 1.2.1. Java平台的局部事务支持1.2.2 ...

  8. spring中的JdbcTemplate的使用方法

    在没有使用mybatis框架之前,通常是用原始的方法编写持久层代码,但即便有jdbcutil工具类,开发效率也非常的低,那么spring为我们提供了JdbcTemplate类,能快速的开发持久层的代码 ...

  9. Spring 学习 day3 : AOP,Spring中JdbcTemplate的使用

    1.AOP 1.1 什么是AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方 式和运行期动态代理实现程序功能的统一维护的一种技术. ...

最新文章

  1. 界面设计 java_Java界面设计
  2. IOS 应用中从竖屏模式强制转换为横屏模式
  3. java jive歌词_Java Jive_Manhattan Transfer with Phil Collins_高音质在线试听_Java Jive歌词|歌曲下载_酷狗音乐...
  4. 计算机控制技术摘要,计算机控制技术摘要.ppt
  5. sql出现列名无效的原因_SQL数据库中的数据类型与表结构的创建
  6. 《cmake practice》总结 | cmake的构建过程与基本指令
  7. Multisim14.0的详细安装步骤
  8. QPSK、16QAM、64QAM信号的散点图、正交、同相分量波形图
  9. MapGIS入门教程——基础操作
  10. query归一 同义词挖掘
  11. 鹏业安装算量软件按桥架快速布线
  12. 极域教师端和学生端链接不上,出现这种问题怎么解决
  13. Excel-资产负债表-模板
  14. 天嵌IMX6核心板竞品分析(启杨IMX6)
  15. 用python简易英汉互译界面_python之做一个简易的翻译器(一)
  16. 二进制、八进制、十进制、十六进制之间的互相转化
  17. UMLChina建模答题赛第二赛季最终排行榜-刘京城、第五元素、龙龙
  18. 没听过计算机竞赛,国际信奥赛中国队夺冠!我忍不住再来和大家说说“编程”...
  19. python 树状数组_【算法日积月累】19-高级数据结构:树状数组
  20. 整理一篇不错的关于软件加密的文章

热门文章

  1. 怎样才有资格被称为开源软件
  2. jQuery实现父窗口的问题
  3. Spring-AOP实践 - 统计访问时间
  4. WPF ListView DoubleClick
  5. 【Git入门之十二】DIY Git
  6. MySQL中INSERT IGNORE INTO和REPLACE INTO的使用
  7. 最新最全的ASP.NET学习资源大全
  8. NASM中SECTION的概念
  9. Django实战(20):分页(Pagination)
  10. 从数组中取出n个元素的所有组合(递归实现)