zoukankan      html  css  js  c++  java
  • 使用jdbcTemplate查询返回自定义对象集合

    1、在UserInfo.java中添加一个Map转换为UserInfo的方法

    [java] view plain copy
    1. public static UserInfo toObject(Map map) {  
    2.     UserInfo userInfo = new UserInfo();  
    3.     userInfo.setId((Integer) map.get(id));  
    4.     userInfo.setUname((String) map.get(uname));  
    5.     userInfo.setUnumber((Integer) map.get(unumber));  
    6.     userInfo.setuRegisterTime((Date) map.get(uregister_time));  
    7.     return userInfo;  
    8. }  
    9.   
    10. public static List toObject(List> lists){  
    11.     List userInfos = new ArrayList();  
    12.     for (Map map : lists) {  
    13.         UserInfo userInfo =  UserInfo.toObject(map);  
    14.         if (userInfo != null) {  
    15.             userInfos.add(userInfo);  
    16.         }  
    17.     }  
    18.     return userInfos;  
    19. }  

    dao层实现:

    [java] view plain copy
    1. public List findAll() {  
    2.     String sql = SELECT * FROM user_info;  
    3.     List<Map<String,Object>> lists = jdbcTemplate.queryForList(sq);  
    4.     return UserInfo.toObject(lists);  
    5. }  

    总结:这种方法能够实现,但是速度相比很慢。

    2、使用jdbcTemplate.query(sql,RowMapper)方式实现:


    dao层实现
    [java] view plain copy
    1. jdbcTemplate.query(sql, new RowMapper<UserInfo>() {  
    2.     @Override  
    3.     public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {  
    4.         UserInfo userInfo = new UserInfo();  
    5.         userInfo.setUname(rs.getString("uname"));  
    6.         userInfo.setUnumber(rs.getInt("unumber"));  
    7.         userInfo.setuRegisterTime(rs.getDate("uregister_time"));  
    8.         return userInfo;  
    9.     }  
    10. });  

    总结:在其他查询方法中无法重用。

    3、 使用RowMapper实现接口方式,覆盖mapRow方法:

    [java] view plain copy
    1. public class UserInfo implements RowMapper, Serializable{  
    2.     @Override  
    3.     public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {  
    4.         UserInfo userInfo = new UserInfo();  
    5.         userInfo.setId(rs.getInt(id));  
    6.         userInfo.setUname(rs.getString(uname));  
    7.         userInfo.setUnumber(rs.getInt(unumber));  
    8.         userInfo.setuRegisterTime(rs.getDate(uregister_time));  
    9.         return userInfo;  
    10.     }  
    11. }  

    dao层实现:

    [java] view plain copy
    1. public UserInfo getById(Integer id) {  
    2.     String sql = SELECT * FROM user_info WHERE id = ?;  
    3.     UserInfo userInfo = jdbcTemplate.queryForObject(sql, new UserInfo(), new Object[] { id });  
    4.     return userInfo;  
    5. }  
    6.   
    7. public List findAll() {  
    8.     String sql = SELECT * FROM user_info;  
    9.     List userInfos = jdbcTemplate.query(sql, new UserInfo());  
    10.     return userInfos;  
    11. }  

    4、dao层使用

    [java] view plain copy
    1. jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<UserInfo>(Qsfymxb.class));  


    spring 提供了一个便利的RowMapper实现-----BeanPropertyRowMapper

    它可自动将一行数据映射到指定类的实例中 它首先将这个类实例化,然后通过名称匹配的方式,映射到属性中去。

    例如:属性名称(vehicleNo)匹配到同名列或带下划线的同名列(VEHICLE_NO)。如果某个属性不匹配则返回属性值为Null



    http://blog.csdn.net/u011332918/article/details/45560117

    http://blog.csdn.net/fengshizty/article/details/43309055





  • 相关阅读:
    WinRAR的命令行模式用法介绍
    Linux find命令的用法实践
    Linux服务器磁盘扩展和oracle表空间文件迁移操作记录
    博客园开篇,自己开发的双色球小助手
    解决MySQL安装3306端口占用问题
    html书写行内元素时-tab和换行会在行内元素间引入间距
    FileReader生成图片dataurl的分析
    mysql启动流程
    npm--debug模块
    js之Symbol类型
  • 原文地址:https://www.cnblogs.com/silyvin/p/9106797.html
Copyright © 2011-2022 走看看