`

Spring JDBCTemplate Query方法查询(转)

阅读更多

 近日系统有一个打印采购单的功能,发现连续打印多张后,主机宕机,看了下service和dao层的实现,很繁杂,估计原因主要出在组页面资料的时候,循环套循环导致效能下降,然后想想有什么办法可以减少组资料时的一些对象转换,dao层取回来的是map,然后还要转换成vo,然后又循环组资料,google下资料,发现jdbctemplate查询还有个query方法,可以直接在查好后返回你需要的vo,改好上线,不知道对效能有没有帮助,不过这个做法感觉不错,特把文章贴在blog里面,以备后用,呵呵


    

在内部建立内联类实现RowMapper接口
  1. package hysteria.contact.dao.impl;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.sql.Types;
  5. import java.util.List;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. import org.springframework.jdbc.core.RowMapper;
  8. import hysteria.contact.dao.ItemDAO;
  9. import hysteria.contact.domain.Item;
  10. public class ItemDAOImpl implements ItemDAO {
  11.  private JdbcTemplate jdbcTemplate;
  12.  public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  13.   this.jdbcTemplate = jdbcTemplate;
  14.  }
  15.  public Item insert(Item item) {
  16.   String sql = "INSERT INTO items(user_id,name,phone,email) VALUES(?,?,?,?)";
  17.   Object[] params = new Object[]{item.getUserId(),item.getName(),item.getPhone(),item.getEmail()};
  18.   int[] types = new int[]{Types.INTEGER,Types.VARCHAR,Types.CHAR,Types.VARCHAR};
  19.   jdbcTemplate.update(sql,params,types);
  20.   return item;
  21.  }
  22.  public Item update(Item item) {
  23.   String sql = "UPDATE items SET name = ?, phone = ?, email = ? WHERE id = ?";
  24.   Object[] params = new Object[] {item.getName(),item.getPhone(),item.getEmail(),item.getId()};
  25.   int[] types = new int[] {Types.VARCHAR,Types.CHAR,Types.VARCHAR,Types.VARCHAR,Types.INTEGER};
  26.   jdbcTemplate.update(sql,params,types);
  27.   return item;
  28.  }
  29.  public void delete(Item item) {
  30.   String sql = "DELETE FROM items WHERE id = ?";
  31.   Object[] params = new Object[] {item.getId()};
  32.   int[] types = new int[]{Types.INTEGER};
  33.   jdbcTemplate.update(sql,params,types);
  34.  }
  35.  public Item findById(int id) {
  36.   String sql = "SELECT * FROM items WHERE id = ?";
  37.   Object[] params = new Object[] {id};
  38.   int[] types = new int[] {Types.INTEGER};
  39.   List items = jdbcTemplate.query(sql,params,types,new ItemMapper());
  40.   if(items.isEmpty()){
  41.    return null;
  42.   }
  43.   return (Item)items.get(0);
  44.  }
  45.  public List<Item> findAll() {
  46.   String sql = "SELECT * FROM items";
  47.   return jdbcTemplate.query(sql,new ItemMapper());
  48.  }
  49.  public List<Item> findAllByUser(int user_id) {
  50.   String sql = "SELECT * FROM items WHERE user_id = ?";
  51.   Object[] params = new Object[]{user_id};
  52.   int[] types = new int[]{Types.INTEGER};
  53.   List items = jdbcTemplate.query(sql,params,types,new ItemMapper());
  54.   return items;
  55.  }
  56.  protected class ItemMapper implements RowMapper {
  57.   public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
  58.    Item item = new Item();
  59.    item.setId(rs.getInt("id"));
  60.    item.setUserId(rs.getInt("user_id"));
  61.    item.setName(rs.getString("name"));
  62.    item.setPhone(rs.getString("phone"));
  63.    item.setEmail(rs.getString("email"));
  64.    return item;
  65.   }
  66.  }
  67. }
分享到:
评论

相关推荐

    spring JdbcTemplate query方法使用示例

    spring JdbcTemplate query方法使用示例,欢迎下载借鉴

    Spring JdbcTemplate 常用方法整理

    本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...

    基于注解的Spring JdbcTemplate

    Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储过程,避免了直接与JDBC API打交道的繁琐工作。它通过异常处理、事务管理以及结果集的自动处理,简化了数据库访问。基于注解的Spring ...

    Spring框架JdbcTemplate类中查询方法介绍

    Spring 框架 JdbcTemplate 类中查询方法介绍 JdbcTemplate 是 Spring 框架中 org.springframework.jdbc.core 包提供的 JDBC 模板类,它是核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供四类方法...

    spring-jdbcTemplate实例工程

    1. **JdbcTemplate对象**:这是Spring JdbcTemplate的核心,它包含了执行SQL语句的所有方法,如update()用于更新,query()用于查询,insert()用于插入等。 2. **参数绑定**:JdbcTemplate支持多种方式的参数绑定,...

    SpringJdbcTemplate封装工具类

    SpringJdbcTemplate是一个模板类,它提供了大量的方法来执行SQL查询、更新、存储过程等操作。这些方法会自动处理JDBC相关的资源关闭、异常转换等细节,使得代码更加整洁和健壮。 2. **数据库自适应** Spring...

    Spring JdbcTemplate查询实例

    首先,Spring JdbcTemplate通过提供一系列的模板方法,如`queryForList`、`queryForObject`、`execute`等,使得执行SQL查询变得更加简洁和安全。这些方法能够处理结果集、自动转换数据类型,并且在发生异常时提供更...

    Spring JDBCTemplate连接池jar包

    4. 使用JdbcTemplate方法:调用JdbcTemplate的相应方法,如`update()`, `query()`, `execute()`等,传入SQL和参数。 5. 处理结果:根据操作类型,处理返回的结果集或者受影响的行数。 6. 事务管理:如果需要,可以...

    spring自带的jdbcTemplate查询、插入预编译使用

    在使用`jdbcTemplate`进行预编译查询时,我们通常会使用`query()`或`queryForList()`方法。例如: ```java String sql = "SELECT * FROM table WHERE id = ?"; Object[] params = {1}; List&lt;MyObject&gt; result = ...

    Spring JdbcTemplate例子

    Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...

    Spring JdbcTemplate api

    除了上述方法,`JdbcTemplate`还提供了一系列`queryForXXX`方法,用于快速返回简单的查询结果,例如查询计数或返回单个字段的值。这些方法简化了常见查询场景的编码工作,提高了开发效率。 总之,`JdbcTemplate`...

    使用Spring JDBCTemplate进行增删改查curd操作

    JdbcTemplate提供了`query()`和`queryForXXX()`方法来执行SQL的SELECT语句。例如,获取单个用户: ```java public User getUserById(int id) { String sql = "SELECT * FROM users WHERE id = ?"; return ...

    spring jdbcTemplate 源码

    4. 调用JdbcTemplate提供的方法,如`update()`执行DML语句,`query()`执行查询,`queryForList()`获取列表,`queryForObject()`获取单个对象等。 5. 使用占位符(问号)或命名参数进行SQL动态绑定,避免SQL注入。 ...

    Spring 学习 JdbcTemplate,模板模式,回调

    在这个例子中,我们注入了JdbcTemplate实例,并使用query方法执行SQL查询。传入的RowCallbackHandler将在遍历结果集时被调用,处理每一行数据。 **5. 总结** Spring JdbcTemplate简化了数据库操作,通过模板模式...

    Spring jdbctemplate + mysql 分页封装

    使用JdbcTemplate的`query()`方法,可以将动态生成的SQL与参数绑定,执行查询。例如: ```java public List&lt;MyEntity&gt; queryByPage(int pageNum, int pageSize) { String sql = "SELECT * FROM table LIMIT ? ...

    spring jdbcTemplate

    Spring JdbcTemplate是Spring JDBC模块的核心组件,它提供了一套模板方法,用于执行常见的JDBC操作,如查询、更新、插入和删除等。通过使用JdbcTemplate,开发者可以避免编写大量重复的JDBC模板代码,减少出错的可能...

    SSH笔记-Spring JdbcTemplate

    1. **JdbcTemplate的基本使用**:JdbcTemplate的核心在于它的`update()`和`query()`方法,前者用于执行更新语句(INSERT、UPDATE、DELETE),后者用于执行查询语句。这些方法接收SQL语句作为参数,并可以传递绑定...

    spring jdbctemplate实例

    `query()`方法用于执行SQL查询,这里我们使用了自定义的`RowMapper`将结果集映射为User对象。 3. **更新(Update)**: ```java public void updateUser(User user) { jdbcTemplate.update( "UPDATE users SET...

    Spring-JdbcTemplate

    4. **调用 JdbcTemplate 方法**:根据 SQL 类型选择 `query()`, `update()`, `call()` 等方法。 5. **结果处理**:通过回调接口(RowMapper, ResultSetExtractor)或 Pojo 映射(RowCallbackHandler)处理结果。 ##...

    4.Spring中的JdbcTemplate,Spring中的的事务,

    List&lt;Account&gt; accounts = jdbcTemplate.query("SELECT * FROM account", new AccountMapper()); ``` 其中,`AccountMapper`实现了`RowMapper`接口,用于将结果集转换为对象。 ##### 查询单个对象 ```java ...

Global site tag (gtag.js) - Google Analytics