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方法使用示例,欢迎下载借鉴
本文将深入探讨Spring JdbcTemplate的常用方法,并结合提供的`JsonBean.java`和`JdbcUtils.java`文件,来理解其在实际应用中的使用。 首先,JdbcTemplate的核心功能在于它提供了一系列的方法来执行SQL语句,包括...
Spring JdbcTemplate提供了一个面向对象的接口,用于执行SQL查询、更新和存储过程,避免了直接与JDBC API打交道的繁琐工作。它通过异常处理、事务管理以及结果集的自动处理,简化了数据库访问。基于注解的Spring ...
1. **JdbcTemplate对象**:这是Spring JdbcTemplate的核心,它包含了执行SQL语句的所有方法,如update()用于更新,query()用于查询,insert()用于插入等。 2. **参数绑定**:JdbcTemplate支持多种方式的参数绑定,...
SpringJdbcTemplate是一个模板类,它提供了大量的方法来执行SQL查询、更新、存储过程等操作。这些方法会自动处理JDBC相关的资源关闭、异常转换等细节,使得代码更加整洁和健壮。 2. **数据库自适应** Spring...
Spring 框架 JdbcTemplate 类中查询方法介绍 JdbcTemplate 是 Spring 框架中 org.springframework.jdbc.core 包提供的 JDBC 模板类,它是核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供四类方法...
首先,Spring JdbcTemplate通过提供一系列的模板方法,如`queryForList`、`queryForObject`、`execute`等,使得执行SQL查询变得更加简洁和安全。这些方法能够处理结果集、自动转换数据类型,并且在发生异常时提供更...
4. 使用JdbcTemplate方法:调用JdbcTemplate的相应方法,如`update()`, `query()`, `execute()`等,传入SQL和参数。 5. 处理结果:根据操作类型,处理返回的结果集或者受影响的行数。 6. 事务管理:如果需要,可以...
Spring JdbcTemplate是Spring框架中的一个核心组件,主要用来简化数据库操作。它提供了一种模板方法设计模式,将SQL语句的执行与结果处理进行了抽象,使得开发者可以更加专注于业务逻辑,而无需关心底层数据访问的...
在使用`jdbcTemplate`进行预编译查询时,我们通常会使用`query()`或`queryForList()`方法。例如: ```java String sql = "SELECT * FROM table WHERE id = ?"; Object[] params = {1}; List<MyObject> result = ...
除了上述方法,`JdbcTemplate`还提供了一系列`queryForXXX`方法,用于快速返回简单的查询结果,例如查询计数或返回单个字段的值。这些方法简化了常见查询场景的编码工作,提高了开发效率。 总之,`JdbcTemplate`...
JdbcTemplate提供了`query()`和`queryForXXX()`方法来执行SQL的SELECT语句。例如,获取单个用户: ```java public User getUserById(int id) { String sql = "SELECT * FROM users WHERE id = ?"; return ...
在这个例子中,我们注入了JdbcTemplate实例,并使用query方法执行SQL查询。传入的RowCallbackHandler将在遍历结果集时被调用,处理每一行数据。 **5. 总结** Spring JdbcTemplate简化了数据库操作,通过模板模式...
使用JdbcTemplate的`query()`方法,可以将动态生成的SQL与参数绑定,执行查询。例如: ```java public List<MyEntity> queryByPage(int pageNum, int pageSize) { String sql = "SELECT * FROM table LIMIT ? ...
4. 调用JdbcTemplate提供的方法,如`update()`执行DML语句,`query()`执行查询,`queryForList()`获取列表,`queryForObject()`获取单个对象等。 5. 使用占位符(问号)或命名参数进行SQL动态绑定,避免SQL注入。 ...
Spring JdbcTemplate是Spring JDBC模块的核心组件,它提供了一套模板方法,用于执行常见的JDBC操作,如查询、更新、插入和删除等。通过使用JdbcTemplate,开发者可以避免编写大量重复的JDBC模板代码,减少出错的可能...
1. **JdbcTemplate的基本使用**:JdbcTemplate的核心在于它的`update()`和`query()`方法,前者用于执行更新语句(INSERT、UPDATE、DELETE),后者用于执行查询语句。这些方法接收SQL语句作为参数,并可以传递绑定...
`query()`方法用于执行SQL查询,这里我们使用了自定义的`RowMapper`将结果集映射为User对象。 3. **更新(Update)**: ```java public void updateUser(User user) { jdbcTemplate.update( "UPDATE users SET...
List<User> users = jdbcTemplate.query("SELECT * FROM users", new UserRowMapper()); ``` 这里UserRowMapper是自定义的ResultSet提取器,将每一行数据映射到User对象。 4. **删除数据**: ```java jdbcTemplate....
为了解决这些问题,Spring引入了JdbcTemplate,它通过提供一系列预定义的方法来简化数据库操作。例如,对于一个简单的SELECT查询,使用JdbcTemplate可以写出更为简洁的代码: ```java String sql = "select * from ...