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. Mygin之错误恢复Recover中间件

    本篇是mygin这个系列的最后一篇.如果想自己动手实现一个类似Gin的Web框架,建议从 mgin第一篇开始, 总代码行数有效行数只有600多行 github源码 mygin 目的 实现错误处理机制 ...

  2. Java 将PDF转为PowerPoint (2行代码)

    通过编程实现PDF转PPT的功能,可以自动化转换过程,减少手动操作的工作量,并根据需要进行批量转换.将PDF文件转换为PPT文档后,可以利用PPT的丰富功能和动画效果,达到更好的演示效果. 在Java ...

  3. 《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(下)

    第 3 章 ASP.NET Core 核心特性 3.5 配置 要访问配置,需要使用 ConfigurationBinder 类,它实现了 IConfigurationBuilder 接口,该接口包括两 ...

  4. SP9494 ZSUM - Just Add It 题解

    题目传送门 前置知识 快速幂 解法 推式子: \(\begin{aligned} Z_n+Z_{n-1}-2Z_{n-2}&=(Z_n-Z_{n-2})+(Z_{n-1}-Z_{n-2}) \ ...

  5. NC22600 Rinne Loves Dynamic Graph

    题目链接 题目 题目描述 Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图. 当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动. 定义变 ...

  6. NC15291 幸运数字Ⅱ

    题目链接 题目 题目描述 定义一个数字为幸运数字当且仅当它的所有数位都是4或者7. 比如说,47.744.4都是幸运数字而5.17.467都不是. 定义next(x)为大于等于x的第一个幸运数字.给定 ...

  7. NC202589 魔法数字

    题目链接 题目 题目描述 牛妹给牛牛写了一个数字n,然后又给自己写了一个数字m,她希望牛牛能执行最少的操作将他的数字转化成自己的. 操作共有三种,如下: 1.在当前数字的基础上加一,如:4转化为5 2 ...

  8. 2023sdut_python实验

    ​ 7-1 sdut-温度转换 n = input() n = float(n) c = 5.0*(n-32.0)/9.0 print("%.2f" %(c)) #其中,c为变量 ...

  9. 走出人生的舒适区,告别 CRUD

    ​舒适区(Comfort zone),指的是一个人所处的一种环境的状态,和习惯的行动,人会在这种安乐窝的状态中感到舒适并且缺乏危机感. 工作中的舒适区 很多人工作也每天很累很辛苦,程序员每天都在加班加 ...

  10. MySQL的经典SQL优化12例(更新于2023年12月28日)

    下列优化的SQL案例,区别于平常加SQL索引的方法优化,大部分都是通过改写SQL语句方法优化,都是日常优化线上慢SQL的实际案例,有比较好的代表性(思路和方法),也是对自己这些年来做SQL优化的总结, ...