使用jdbcTemplate查询返回自定义对象集合代码示例

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

public static UserInfo toObject(Map map) {
	UserInfo userInfo = new UserInfo();
	userInfo.setId((Integer) map.get(id));
	userInfo.setUname((String) map.get(uname));
	userInfo.setUnumber((Integer) map.get(unumber));
	userInfo.setuRegisterTime((Date) map.get(uregister_time));
	return userInfo;
}
public static List toObject(List> lists){
	List userInfos = new ArrayList();
	for (Map map : lists) {
		UserInfo userInfo = UserInfo.toObject(map);
		if (userInfo != null) {
			userInfos.add(userInfo);
		}
	}
	return userInfos;
}

dao层实现:

public List findAll() {
  String sql = SELECT * FROM user_info;
  List<Map<String,Object>> lists = jdbcTemplate.queryForList(sq);
  return UserInfo.toObject(lists);
} 

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

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

dao层实现

jdbcTemplate.query(sql, new RowMapper<UserInfo>() {
  @Override
  public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
    UserInfo userInfo = new UserInfo();
    userInfo.setUname(rs.getString("uname"));
    userInfo.setUnumber(rs.getInt("unumber"));
    userInfo.setuRegisterTime(rs.getDate("uregister_time"));
    return userInfo;
  }
}); 

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

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

public class UserInfo implements RowMapper, Serializable{
  @Override
  public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
    UserInfo userInfo = new UserInfo();
    userInfo.setId(rs.getInt(id));
    userInfo.setUname(rs.getString(uname));
    userInfo.setUnumber(rs.getInt(unumber));
    userInfo.setuRegisterTime(rs.getDate(uregister_time));
    return userInfo;
  }
} 

dao层实现:

public UserInfo getById(Integer id) {
  String sql = SELECT * FROM user_info WHERE id = ?;
  UserInfo userInfo = jdbcTemplate.queryForObject(sql, new UserInfo(), new Object[] { id });
  return userInfo;
} 

public List findAll() {
  String sql = SELECT * FROM user_info;
  List userInfos = jdbcTemplate.query(sql, new UserInfo());
  return userInfos;
} 

4、dao层使用

jdbcTemplate.query(sql.toString(), new BeanPropertyRowMapper<UserInfo>(Qsfymxb.class));

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

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

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

总结

以上就是本文关于使用jdbcTemplate查询返回自定义对象集合代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

(0)

相关推荐

  • Java 使用JdbcTemplate 中的queryForList发生错误解决办法

    Java 使用JdbcTemplate 中的queryForList发生错误解决办法          在开发项目中遇到JdbcTemplate 中的queryForList发生错误,很是头疼,在网上找了相关资料,可以帮忙解决,这里记录下, 一.问题描述:  查询时使用JdbcTemplate 中的queryForList发生错误,如下: 查询方法如下: jdbcTemplate.queryForList(selectSql.toString(), entityClass) 查询sql如下: s

  • spring实现jdbctemplate添加事务支持示例

    复制代码 代码如下: public interface JdbcTemplate extends JdbcOperations {public abstract void beginTranstaion(); public abstract void commit(); public abstract void rollback();} 复制代码 代码如下: public class JdbcTemplateImpl extends org.springframework.jdbc.core.J

  • Spring 中jdbcTemplate 实现执行多条sql语句示例

    说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里减去订单所需的钱数,即需要更新银行账户的表,同时需要更新淘宝订单的表将订单状态改为"已付款",这就需要先后执行多个sql(仅仅用于表达执行多的SQL的举例说明,具体淘宝如何实现并不是很清楚~~~~~); 但如果这中间出现电脑断网断电等问题,仅将我们银行账户的钱扣掉了,订单状态并没有改,那我

  • JdbcTemplate方法介绍与增删改查操作实现

    JdbcTemplate介绍 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架,Spring Boot Spring Data-JPA. 作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务. 通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低. JdbcTemplate方法介绍 JdbcTem

  • 详解spring boot中使用JdbcTemplate

    本文将介绍如何将spring boot 与 JdbcTemplate一起工作. Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中. JdbcTemplate 是在JDBC API基础上提供了更抽象的封装,并提供了基于方法注解的事务管理能力. 通过使用SpringBoot自动配置功能并代替我们自动配置beans. 数据源配置 在maven中,我们需要增加spring-boot-starter-jdbc

  • Spring Boot中使用jdbctemplate 操作MYSQL数据库实例

    最近在学习使用Spring Boot连接数据库,今天学习了使用jdbctemplate 操作MYSQL数据库,下面就留个笔记 不废话,先来代码 pom文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org

  • SpringBoot使用JdbcTemplate操作数据库

    前言 本文是对SpringBoot使用JdbcTemplate操作数据库的一个介绍,提供一个小的Demo供大家参考. 操作数据库的方式有很多,本文介绍使用SpringBoot结合JdbcTemplate. 新建项目 新建一个项目.pom文件中加入Jdbc依赖,完整pom如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM

  • springboot使用JdbcTemplate完成对数据库的增删改查功能

    首先新建一个简单的数据表,通过操作这个数据表来进行演示 DROP TABLE IF EXISTS `items`; CREATE TABLE `items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `name` varchar(10) DEFAULT NULL, `detail` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE

  • spring的jdbctemplate的crud的基类dao

    复制代码 代码如下: import java.util.List; /*** * 基本接口 *  * @author xyq * @param <T> *  */public interface BaseDaoInf<T> { /***  * 查询接口  *   * @return  */ public List<T> find(String sql, Object[] parameters, Class<T> cl); /***  *  添加,更新,删除接

  • SpringBoot JdbcTemplate批量操作的示例代码

    前言 在我们做后端服务Dao层开发,特别是大数据批量插入的时候,这时候普通的ORM框架(Mybatis.hibernate.JPA)就无法满足程序对性能的要求了.当然我们又不可能使用原生的JDBC进行操作,那样尽管效率会高,但是复杂度会上升. 综合考虑我们使用Spring中的JdbcTemplate和具名参数namedParameterJdbcTemplate来进行批量操作. 改造前 在开始讲解之前,我们首先来看下之前的JPA是如何批量操作的. 实体类User: public class App

随机推荐