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. PHP操作数据分页

    PHP操作数据分页 一.数据库安全 string addslashes ( string $str ) 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线.这些字符是单引号('). ...

  2. (python)每日代码||2024.2.2||python当中,True==1竟然引发了问题

    做题的时候有的测试点里竟然用True替换1,骗过了我的代码,结果没过测试点 lst = [1, True] for item in lst: if not isinstance(item, bool) ...

  3. ABC 311

    前四题过水 E 枚举正方形的上边界所在行.对于第 \(i\) 行一个没洞的位置 \((i,j)\),我们尝试求出以它为右上角的无洞正方形个数. 结论:设以 \((i,j-1)\) 为右上角的无洞正方形 ...

  4. 思维分析逻辑 6 DAY

    数据仓库研究 大数据体系 日志采集和传输 数据建模 数据管理 数据应用 数据建模 日志传输(原始数据) ODS(原始数据) 用户基础属性表:imei,prov,city,machine 用户文章下发表 ...

  5. JS Leetcode 220. 存在重复元素 III 题解分析,暴力解法与桶排序

    壹 ❀ 引 今天的题目来自LeetCode 220. 存在重复元素 III,难度中等,题目描述如下: 给你一个整数数组 nums 和两个整数 k 和 t .请你判断是否存在 两个不同下标 i 和 j, ...

  6. 计网学习笔记十 Internet Routing Protocols

    上一讲简单介绍了routing和两种最小路径算法的使用,这节课讲了两种算法是如何糅合进协议中来实现具体使用的. 这一讲内容有AS的介绍,以及IGP和BGP协议. Autonomous Systems ...

  7. NC20811 蓝魔法师

    题目链接 题目 题目描述 "你,你认错人了.我真的,真的不是食人魔."--蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一 ...

  8. 服务器网卡,10GE设备相关笔记

    连接线 铜线 六类线基本可以满足万兆, 万兆网络一般只在短程使用铜线, 或者完全不用铜线 光纤 根据带宽和距离, 分为OM2, OM3, OM4等, OM2一般用于千兆或者短距离万兆, 长距离万兆使用 ...

  9. 【Unity3D】GUI控件

    1 前言 ​ Unity 3D 提供了 GUI.NGUI.UGUI 等图形系统,以增强玩家与游戏的交互性.GUI 在编译时不能可视化,在运行时才能可视化.GUI 代码需要在 OnGUI 函数中调用才能 ...

  10. Js模块化导入导出

    Js模块化导入导出 CommonJs.AMD.CMD.ES6都是用于模块化定义中使用的规范,其为了规范化模块的引入与处理模块之间的依赖关系以及解决命名冲突问题,并使用模块化方案来使复杂系统分解为代码结 ...