spring 之jdbcTemplate使用

1 方法 queryForObject() 与queryForList()
方法queryForObject(),当在数据表查找的记录不存在时,将抛异常,使用时需要添加异常处理,根据异常类型确定返回结果,建议使用queryForList()替代.

2 方法 update(sql,new Object[]{} ) 与 jdbcTemplate.update(sql, new PreparedStatementSetter())

在spring中第一中方式最终将转换为第二种去执行,传说第二种效率更高,未经验证. 这里只讲述这两种方式的使用,不考虑效率问题.
final String sql = "insert into t_user(c_openid, c_cellphone, c_password) values(?,?,?)";
int rowsAffected = jdbcTemplate.update(sql, new PreparedStatementSetter() {
    @Override
    public void setValues(PreparedStatement ps) throws SQLException {
    int index = 0;
    ps.setString(++index, registerData.getOpenid());
    ps.setString(++index, registerData.getCellphone());
    ps.setString(++index, registerData.getPassword());
    }
});
final String sql = "insert into t_user(c_openid, c_cellphone, c_password) values(?,?,?)";
int rowsAffected = jdbcTemplate.update(sql, new Object[]{
registerData.getOpenid(),
registerData.getCellphone(),
registerData.getPassword()
});

3 插入返回主键

KeyHolder keyHolder = new GeneratedKeyHolder();
final String sql = "insert into t_user(c_openid, c_cellphone, c_password) values(?,?,?)";
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public java.sql.PreparedStatement createPreparedStatement(Connection con)throws SQLException, DataAccessException {
// TODO Auto-generated method stub
java.sql.PreparedStatement preparedStat = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int index = 0;
    preparedStat.setString(++index, loginData.getOpenId());
    preparedStat.setString(++index, loginData.getCellphone());
                preparedStat.setString(++index, loginData.getPassword());

return preparedStat;
    }
}, keyHolder);
BigInteger generatedId = BigInteger.valueOf(keyHolder.getKey().longValue());
时间: 2024-12-02 10:41:31

spring 之jdbcTemplate使用的相关文章

用Spring的JdbcTemplate实现分页功能

分页     最近使用了spring中的JdbcTemplate实现数据库的查询和插入操作,发现spring的JdbcTemplate 不象HibernateTemplate那么好,已经实现了分页功能.所以要自己实现,使用getJdbcTemplate().queryForList(string sql)得到的结果集是所有的. 如果你的查询有10000条记录,或者更多,速度肯定慢了,当然你可以通过resultset中的游标控制查询的起始和结束.我这里用的是Oracle数据库,使用伪列ROWNUM

使用spring的jdbcTemplate做查询时遇到的问题。。。

问题描述 String handlersql="select count(*)  from d_handler where unitcode=? and handlercode=?";     int handlercount=jdbcTemplate.queryForInt(handlersql,logininfo.getUnitcode(),logininfo.getHandlercode());表里对应的上面的查询条件是有一条数据的,但是用queryForInt查出来的 hand

spring的jdbctemplate的crud的基类dao_java

复制代码 代码如下: import java.util.List; /*** * 基本接口 *  * @author xyq * @param <T> *  */public interface BaseDaoInf<T> {  /***  * 查询接口  *   * @return  */ public List<T> find(String sql, Object[] parameters, Class<T> cl);  /***  *  添加,更新,删

spring注入jdbctemplate空指针

问题描述 importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.jdbc.core.JdbcTemplate;importorg.springframework.jdbc.datasource.DataSourceUtils;importorg.springframework.stereotype.Service;@Service("dbAccess")publicc

spring实现jdbctemplate添加事务支持示例_JSP编程

复制代码 代码如下: public interface JdbcTemplate extends JdbcOperations {public abstract void beginTranstaion(); public abstract void commit(); public abstract void rollback();} 复制代码 代码如下: public class JdbcTemplateImpl extends org.springframework.jdbc.core.J

spring jdbctemplate 设计的问题

问题描述 simplespringtemplate 提供了对jdbc的包装,并提供了一些方便的方法,但是在进行选择的时候还是感觉不方便.假设有数据表:user ,包含属性 Long id,String name ,int salary,如果我要查询工资为234的用户,设想生成的语句为:select * from user where age=234如果使用jdbctemplate则需要使用如下代码:simplejdbctemplate.queryForObject("select * from

Introducing to Spring Framework

Introducing to Spring Framework 作者:Rod Johnson 译者:yanger,taowen 校对:taowen 关于Spring Framework,今年夏天你可能已经听见很多的议论.在本文中,我将试图解释Spring能完成什么,和我怎么会认为它能帮助你开发J2EE应用程序. 又来一个framework? 你可能正在想"不过是另外一个的framework".当已经有许多开放源代码(和专有) J2EE framework时,为什么你还要耐下心子读这篇文

通向架构师的道路 第十八天 万能框架Spring(一)

前一阵列刚换了个新的工作环境,然后自己的baby也刚出生,一直没有时间去做工作以后的其它事了,担搁了一段日子. 今天儿子满一周了,我内人她家帮着照顾着,总算我可以喘口气休息一下,因此决定将这个系列的博文继续下去,同时也将 此篇献给我刚出生一周的儿子和幸苦了10个月的爱人. 二.基本概念 Spring,作为一个流行框架它给我们在日常工程中的框架搭建提供了太多的便利了,它就像一个骨架一样,你可以在上面自 己去塑出肌肤与血肉并赋于它灵魂. 从今天开始我们将要连续几天基于Spring的基础上来讲软件开发

通向架构师的道路 第二十天 万能框架spring(二)maven结合spring与ibatis

一.前言 上次讲了Struts结合Spring并使用Spring的JdbcTemplate来搭建工程框架后我们面临着jar库无法管理,工 程发布不方便,jar包在工程内太占空间,jar包冲突,管理,甚至漏包都问题.于是我们在讲"万能框架spring(二)"前,传授 了一篇番外篇,即讲利用maven来管理我们的jar库. 从今天开始我们将结合"万能框架spring(一)"与番外篇maven来更 进一步丰富我们的ssx框架,那么今天讲的是使用iBatis3结合SS来构建