spring jdbc 使用详解

Spring将替我们完成所有使用JDBC API进行开发的单调乏味的、底层细节处理工作。
操作JDBC时Spring可以帮我们做这些事情:
定义数据库连接参数,打开数据库连接,处理异常,关闭数据库连接
我们要做的事:sql,传参,使用正确的方法,处理结果。
下面按照功能介绍:

1.delete(批量删除)
    final String[] id=ids.split(",");
    jdbcTemplate.batchUpdate("DELETE FROM file WHERE id = ?",
        new BatchPreparedStatementSetter(){
             public void setValues(PreparedStatement ps, int i)throws SQLException   {
                    ps.setString(1, id[i]);
             }

             public int getBatchSize() {
                    return id.length;
             }
        });
   return true;

2.update

    private static final String UPDATE_MODALITY_SQL = "UPDATE study SET mods = ? WHERE id = ?";
    public int updateModalitys(String mods, Integer studyId) {
        return getJdbcTemplate().update(UPDATE_MODALITY_SQL, mods, studmodsyId);
    }

3.insert(批量插入)

        private static final String BATCH_SQL = "insert into sharding(instance_id,url,ctime,mtime)values (?,?,?,?)";
        public void batchInsert(List<ROIPlaneSharding> roiPlaneShardings) {

            this.viewerJdbcTemplate().batchUpdate(BATCH_ROI_PLANE_SHARDING_INSERT_SQL,
                new ROIPlaneShardingBatchPreparedStatementSetter(roiPlaneShardings));
        }
    private class ROIPlaneShardingBatchPreparedStatementSetter implements BatchPreparedStatementSetter {

        private List<ROIPlaneSharding> roiPlaneShardings;

        public ROIPlaneShardingBatchPreparedStatementSetter(List<ROIPlaneSharding> roiPlaneShardings) {
            this.roiPlaneShardings = roiPlaneShardings;
        }

        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException {
            ROIPlaneSharding sharding = roiPlaneShardings.get(i);
            ps.setInt(1, sharding.getInstanceId());
            ···
        }

        @Override
        public int getBatchSize() {
            return roiPlaneShardings.size();
        }

    }

4.select

字段查找
private static final String SELECT_SQL = "SELECT instance_id,roiplane_id,url FROM sharding WHERE instance_id =:id";
public List<ROIPlaneSharding> getShardings(List<Integer> instanceIds, List<Integer> roiPlaneIds,Integer contouring) {

        MapSqlParameterSource sqlParameter = new MapSqlParameterSource();

        sqlParameter.addValue("id", id);
        return namedViewerJdbcTemplate().query(SELECT_SQL, sqlParameter, getRowMapper());
    }

    private RowMapper<sharding> getRowMapper() {
        return new RowMapper<ROIPlaneSharding>() {

            @Override
            public ROIPlaneSharding mapRow(ResultSet rs, int rowNum) throws SQLException {

                ROIPlaneSharding Sharding = new ROIPlaneSharding();

                roiPlaneSharding.setUrl(rs.getString(ROIPlaneSharding.urlCoulmn));
                ···
                return roiPlaneSharding;
            }
        };
    }
集合 in(:ids) 查找
private static final String SELECT_INSTANCEIDS = "select * from file where id in(:ids)";
    @Override
    public List<ResourceInfo> getFiles(List<Integer> fileIds) {
        if (null == fileIds || fileIds.isEmpty()) {
            return null;
        }

        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("ids", fileIds);
        return namedBaseJdbcTemplate().query(SELECT_INSTANCEIDS, parameters, getRowMapper());
    }

    protected RowMapper<ResourceInfo> getRowMapper() {
        return new RowMapper<ResourceInfo>() {
            @Override
            public ResourceInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
                ResourceInfo file = new ResourceInfo();
                file.setFileName(rs.getString(File.originalNameCoulmn));
                ···
                return file;
            }
        };
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值