Spring JdbcTemplate使用记录

这两天尝试了Spring提供的JdbcTemplate,感觉比hibernate还坑,记录一下,顺便聊一聊自己对ORM框架一些认识。

    关于查询对象时,JdbcTemplate提供了queryForObject方法,很自然地,我理解按着传入参数(String sql, MyEntity.class)就可以了,结果报了这样的错误:

Incorrect column count: expected 1, actual 18
跟一下呢,发现spring并没有自动注入,需要entity实现RowMapper<>接口,项目里的代码是这么写的:

@Override
    public SpecialEmployeeEntity mapRow(ResultSet rs, int rowNum) throws SQLException {
        SpecialEmployeeEntity employeeEntity = new SpecialEmployeeEntity();
        employeeEntity.setUpdate_time(rs.getTime("update_time"));
        employeeEntity.setCreate_time(rs.getTime("create_time"));
        employeeEntity.setValid(rs.getBoolean("valid"));
        employeeEntity.setTitle(rs.getString("title"));
        employeeEntity.setGroup(rs.getString("group"));
        employeeEntity.setArea(rs.getString("area"));
        employeeEntity.setCurrent_max(rs.getInt("current_max"));
        employeeEntity.setHistory_max(rs.getInt("history_max"));
        employeeEntity.setMobile(rs.getString("mobile"));
        employeeEntity.setName(rs.getString("name"));
        employeeEntity.setEmployee_num(rs.getString("employee_num"));
        return employeeEntity;
    }
本来以为这样就完事了,结果项目跑着跑着又报错了,错误如下:

Incorrect column count: expected 1, actual 0
错误原因是sql没有查出返回的结果,讲道理,框架应该考虑这样的情况,如果sql结果为空,返回空对象,遗憾的是JdbeTemplete并没有这么做。


找到的替代方案呢,是使用queryForList方法,不过这个也不是一个很好的方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值