`

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查询、插入预编译使用

    简单的jdbcTemplate预编译、回调等

    JdbcTemplate的jar包.rar

    查询所有的内容,封装为对象用:template.query(sql, new BeanPropertyRowMapper&lt;对象&gt;(对象.class)); 查询需要使用聚合函数的内容,如:select count(id)from account用:template.queryForObject(sql)

    Spring中文帮助文档

    11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4. StoredProcedure类 11.6.5. SqlFunction类 11.7. 参数和数据处理的基本原则 11.7.1. 为参数设置SQL类型信息 11.7.2. 处理BLOB 和...

    jdbcTemplate

    jdbcTemplate.query(sql, new RowCallbackHandler(){ @Override public void processRow(ResultSet rs) throws SQLException { User u=new User(); u.setId(rs.getInt("id")); u.setUsername(rs...

    spring-jdbcmapperdvw.zip

    dvw是一个用于spring-jdbc的简单Mapper。 特性 使用注解和反射实现。 通过注解声明实体属性的数据来源(查询结果的列名),并声明该属性是否使用setter赋值。 如果属性名和...

    rest风格+jdbctemplate的CRUD操作.rar

    ①查询所有员工列表:jdbcTemplate.query(sql, new RowMapper() {}回调函数的使用 ②添加员工:添加员工之前要先查询出所有部门,因此要先查询所有的部门列表,然后用POST请求添加员工,重定向回员工列表 ③删除员工...

    springjdbc

    &lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"&gt; &lt;property name="dataSource" ref="dataSource" /&gt; &lt;/bean&gt; &lt;/beans&gt; &lt;!-- controller配置 --&gt; &lt;beans xmlns="http://www....

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新...

    Spring 2.0 开发参考手册

    11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. ...

    Spring API

    11.6.1. SqlQuery类 11.6.2. MappingSqlQuery类 11.6.3. SqlUpdate类 11.6.4. StoredProcedure类 11.6.5. SqlFunction类 11.7. 参数和数据处理的基本原则 11.7.1. 为参数设置SQL类型信息 11.7.2. 处理BLOB 和...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    spring-jdbc-operations:演示Spirng JDBCTemplate操作,例如query(),queryForObject(),QueryList()和检索自动生成的键

    spring-jdbc-operations 演示Spirng JDBCTemplate操作,例如query(),queryForObject(),QueryForList()以及如何使用PreparedStatementCreator检索自动生成的键。 #技术堆栈。 Spring JDBC。 HSQL InMemory...

    halo-query:建立在spring jdbc 基础上的数据库操作框架。简化spring jdbc调用。支持分布式数据库操作,支持单库jdbc事务

    ##底层使用的是spring jdbcTemplate ##目前支持的数据库为mysql,db2 ##mysql,db2测试通过 ##支持分分布式数据库操作,支持单库jdbc事务,支持读写分离(请看database_distribution.md) ##需要注意的是,查询使用的sql...

    squirrel:一个基于JAVA的持久层包装。依赖于 Spring 的 JdbcTemplate 实现

    查询 |— Query |— Criteria |— Restrictions |— ResultSet 排序 |— Order 分页 |— Pagination 主键策略 |— UUID |— INCREMENT 注:Hibernate 有冬眠之意,Squirrel ( 松鼠 ) 具有冬眠的习性,项目中众多类...

    SPRING API 2.0.CHM

    JdbcTemplate JdbcTransactionObjectSupport JdbcUpdateAffectedIncorrectNumberOfRowsException JdbcUtils JdkDynamicAopProxy JdkRegexpMethodPointcut JdkVersion JdoAccessor JdoCallback ...

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    spring-framework-reference4.1.4

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    Spring jdbc中数据库操作对象化模型的实例详解

    Spring jdbc中数据库操作对象化模型的实例详解 ...1.查询接口:SqlQuery 1) GenericSqlQuery, UpdatableSqlQuery, MappingSqlQueryWithParameter  2) SqlUpdate, BatchSqlUpdate 3) SqlCall  1) 将数据库操作s

Global site tag (gtag.js) - Google Analytics