org.springframework.jdbc.core.JdbcTemplate 常用操作

1、单条数据结果集的处理(RowCallbackHandler)
public Agent getAgent(final int id) {
        String sql = "select * from t_agent where id = ?";
        final Agent agent = new Agent();
        jdbcTemplate.query(sql, new Object[] { id }, new RowCallbackHandler() {

            public void processRow(ResultSet rs) throws SQLException {
                agent.setAge(rs.getInt("age"));
                agent.setName(rs.getString("name"));
                agent.setSex(rs.getString("sex"));
            }
        });
        return agent;
    }
2、多条数据结果集的处理(RowCallbackHandler)
public List<Agent> getAgent(final int fromId , final int toId) {
        String sql = "select * from t_agent where id between ? and ?";
        final List<Agent> agents = new ArrayList<Agent>();
        jdbcTemplate.query(sql, new Object[] { fromId,toId }, new RowCallbackHandler() {

            public void processRow(ResultSet rs) throws SQLException {
                Agent agent = new Agent();
                agent.setAge(rs.getInt("age"));
                agent.setName(rs.getString("name"));
                agent.setSex(rs.getString("sex"));
                agents.add(agent);
            }
        });
        return agents;
    }
3、使用RowMapper映射多行数据
public List<Agent> getAgent(final int fromId, final int toId){
        final String sql = "select userName,sex,age from t_agent where id between ? and ?";

        return jdbcTemplate.query(sql, new Object[]{fromId , toId}, new RowMapper<Agent>() {

            public Agent mapRow(ResultSet rs, int rowNum) throws SQLException {
                Agent agent = new Agent();
                agent.setAge(rs.getInt("age"));
                agent.setName(rs.getString("userName"));
                agent.setSex(rs.getString("sex"));
                return agent;
            }
        });
    }
4、批量插入操作(BatchPreparedStatementSetter)
public void batchUpdateInsert(final List<Agent> agents){
        final String sql = "insert into t_user (userName,sex,age) values(?,?,?)";
        jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

            public void setValues(PreparedStatement ps, int index) throws SQLException {
                Agent agent = agents.get(index);
                ps.setString(1, agent.getName());
                ps.setString(2, agent.getSex());
                ps.setInt(3, agent.getAge());

            }

            public int getBatchSize() {
                return agents.size();
            }
        });
    }
5、查询单值数据
public int queryForInt(){
    String sql = "select count(*) from t_agent";
    return jdbcTemplate.queryForInt(sql);
}
注、在编写SQL语句时,特意用大写方式编写SQL的关键字,
而用小写的形式编写表名,字段等非语义的元素是比较好的编码习惯,
Eclipse 转大写快捷键Ctrl + Shift + X,
转小写快捷键 Ctrl + Shift + Y。


6、调用存储函数
public int getViewPointNum(final int spaceId){
        String sql = "{call P_GET_VIEW_POINT_NUM(?,?)}";//调用存储过程的的SQL语句
        Integer num = (Integer) jdbcTemplate.execute(sql, new CallableStatementCallback() {

            public Integer doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
                cs.setInt(1, spaceId);//绑定参数
                cs.registerOutParameter(2, Types.INTEGER);//注册输出参数
                cs.execute();
                return cs.getInt(2);//获取输出参数的值
            }
        });
        return num;
    }
7、调用函数
//3.2.18 增加代理商坐席分组
    public int storedProc_addAgentGroup(final AgentUserInfo agent) {
        Integer result = (Integer) jdbcTemplate.execute(new CallableStatementCreator() {
            public CallableStatement createCallableStatement(Connection con) throws SQLException {
                String storedProc = "{?=call HD_SF_ADDGROUP(?,?,?,?,?)}";
                CallableStatement call = con.prepareCall(storedProc);
                call.registerOutParameter(1, Types.INTEGER); 注册输出参数的类型 
                call.setString(2, agent.getAgentname());// 设置输入参数的值   
                call.setString(3, agent.getUserphone());
                call.setInt(4, agent.getGroupid());
                call.setInt(5, agent.getState());
                call.setString(6, agent.getPhonenumber());
                return call;
            }
        }, new CallableStatementCallback() {
            public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
                cs.execute();
                System.out.println(cs.getInt(1));
                return cs.getInt(1);
            }
        });
        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值