queryspringtypessqldaoemail

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





   

在内部建立内联类实现RowMapper接口

package hysteria.contact.dao.impl;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Types;

import java.util.List;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.jdbc.core.RowMapper;

import hysteria.contact.dao.ItemDAO;

import hysteria.contact.domain.Item;

public class ItemDAOImpl implements ItemDAO {

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {

  this.jdbcTemplate = jdbcTemplate;

}

public Item insert(Item item) {

  String sql = "INSERT INTO items(user_id,name,phone,email) VALUES(?,?,?,?)";

  Object[] params = new Object[]{item.getUserId(),item.getName(),item.getPhone(),item.getEmail()};

  int[] types = new int[]{Types.INTEGER,Types.VARCHAR,Types.CHAR,Types.VARCHAR};

  jdbcTemplate.update(sql,params,types);

  return item;

}

public Item update(Item item) {

  String sql = "UPDATE items SET name = ?, phone = ?, email = ? WHERE id = ?";

  Object[] params = new Object[] {item.getName(),item.getPhone(),item.getEmail(),item.getId()};

  int[] types = new int[] {Types.VARCHAR,Types.CHAR,Types.VARCHAR,Types.VARCHAR,Types.INTEGER};

  jdbcTemplate.update(sql,params,types);

  return item;

}

public void delete(Item item) {

  String sql = "DELETE FROM items WHERE id = ?";

  Object[] params = new Object[] {item.getId()};

  int[] types = new int[]{Types.INTEGER};

  jdbcTemplate.update(sql,params,types);

}

public Item findById(int id) {

  String sql = "SELECT * FROM items WHERE id = ?";

  Object[] params = new Object[] {id};

  int[] types = new int[] {Types.INTEGER};

  List items = jdbcTemplate.query(sql,params,types,new ItemMapper());

  if(items.isEmpty()){

   return null;

  }

  return (Item)items.get(0);

}

public List<Item> findAll() {

  String sql = "SELECT * FROM items";

  return jdbcTemplate.query(sql,new ItemMapper());

}

public List<Item> findAllByUser(int user_id) {

  String sql = "SELECT * FROM items WHERE user_id = ?";

  Object[] params = new Object[]{user_id};

  int[] types = new int[]{Types.INTEGER};

  List items = jdbcTemplate.query(sql,params,types,new ItemMapper());

  return items;

}

protected class ItemMapper implements RowMapper {

  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {

   Item item = new Item();

   item.setId(rs.getInt("id"));

   item.setUserId(rs.getInt("user_id"));

   item.setName(rs.getString("name"));

   item.setPhone(rs.getString("phone"));

   item.setEmail(rs.getString("email"));

   return item;

  }

}

}

Spring JDBCTemplate Query方法查询的更多相关文章

  1. spring jdbcTemplate query 返回值为null

    spring jdbcTemplate query 返回值为null 今天使用以下方法从数据库中查询数据,返回列表 public List<BookBean> getBooks(){ St ...

  2. spring jdbcTemplate query

    1. spring jdbcTemplate query需要实现mapRow方法 package com.cdv.apolloagent.jdbc.dao.impl; import java.sql. ...

  3. Spring JdbcTemplate 查询方法中的RowMapper实现汇总

    实现一.在内部建立内联类实现RowMapper接口 package hysteria.contact.dao.impl; import java.sql.ResultSet; import java. ...

  4. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  5. Spring JdbcTemplate 查询结果集Map反向生成Java实体(转)

    原文地址:Spring JdbcTemplate 查询结果集Map反向生成Java实体 以前写过一篇文章吐槽过Spring JdbcTemplate的queryForList方法(参见:http:// ...

  6. Spring JdbcTemplate查询实例

    这里有几个例子向您展示如何使用JdbcTemplate的query()方法来查询或从数据库提取数据.整个项目的目录结构如下: 1.查询单行数据 这里有两种方法来查询或从数据库中提取单行记录,并将其转换 ...

  7. [转] spring JdbcTemplate 查询,使用BeanPropertyRowMapper

    [From] http://blog.csdn.net/limenghua9112/article/details/45096437 应用: 使用Spring的JdbcTemplate查询数据库,获取 ...

  8. Spring JdbcTemplate类常用的方法

    execute(String  sql) 可执行任何sql语句,但返回值是void,所以一般用于数据库的新建.修改.删除和数据表记录的增删改. int  update(String sql) int  ...

  9. 【Spring】Spring的数据库开发 - 2、Spring JdbcTemplate的常用方法(execute、update、query)

    Spring JdbcTemplate的常用方法 文章目录 Spring JdbcTemplate的常用方法 execute() update() query() 简单记录-Java EE企业级应用开 ...

  10. Spring JdbcTemplate 方法详解

    JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修 ...

随机推荐

  1. KB0002.对DoraCloud的桌面模板系统盘进行扩容

    KB0002.对DoraCloud的桌面模板系统盘进行扩容 DoraCloud的桌面是根据桌面模板创建的.桌面模板包含了系统盘.有时系统盘的空间不满足需求,就需要对系统盘大小进行调整. 我们以Hype ...

  2. 【MFC学习二】CFileDialog导出文件

    用CFileDialog导出文件,用户可指定文件名后缀等,感觉操作上比上文的 BROWSEINFO 更加人性化. //将数据项写入CSV文件 int PutCSVItemLine(FILE *file ...

  3. .NET Core开发实战(第32课:集成事件:解决跨微服务的最终一致性)--学习笔记

    32 | 集成事件:解决跨微服务的最终一致性 首先看一下集成事件的工作原理 它的目的时为了实现系统的集成,它主要是用于系统里面多个微服务之间相互传递事件 集成事件的实现方式有两种,一种是图上显示的发布 ...

  4. 开源.NetCore通用工具库Xmtool使用连载 - 散列算法篇

    [Github源码] <上一篇>详细介绍了Xmtool工具库中的加解密类库,今天我们继续为大家介绍其中的散列算法类库. 散列算法在某些特殊场景也可以当做加密方法使用:其特点是不可逆,同一内 ...

  5. [MyArch]我的Archlinux与bspwm的重生之途

    0x00 前言碎语 2023.8.19 好久不见.这些日子一直在和bspwm和archlinux打交道.自从上次NepCTF的前几天和CuB3y0nd小师傅的bspwm配置打交道之后我一发不可收拾.中 ...

  6. Python三次样条插值与MATLAB三次样条插值简单案例

    1 三次样条插值 早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线,成为样条曲线. 设函数S(x)∈C2[a,b] ,且在每个小区间[x ...

  7. Set与WeakSet

    Set与WeakSet Set对象允许存储任何类型的唯一值,无论是原始值或者是对象引用,Set对象中的值不会重复. WeakSet对象允许存储对象弱引用的唯一值,WeakSet对象中的值同样不会重复, ...

  8. Annotation-specified bean name conflicts with existing

    问题说明 Annotation-specified bean name conflicts with existing,non-compatible bean definition of same n ...

  9. powerdesigner导出模型为RTF

    在设计模型的时候需要将设计好的模型进行尺寸调整并复制到word中.这时候就需要利用导出报告功能,导出为word格式. 再做进一步处理. 1.选择[报告]-[Generate Report] 2.自动打 ...

  10. Android使用SurfaceView实现签名板

    SurfaceView使用 首先创建一个SurfaceViewSign类,继承SurfaceView类,继承 SurfaceHolder.Callback和Runnable接口,代码如下: impor ...