如题
如果我自己定义个Bean,Person
class Person{
private int id;
private String username;
private String password;
get...
set...
}
JdbcTemple.queryForObject("select * from person",Person.class)
如果这么使用就会出现...
Incorrect column count : expected 1 actual 3
如果我查询一个字段再定义类型就可以?
JdbcTemple.queryForObject("select username from person",String.class)
[b]问题补充:[/b]
那我现在使用查询
返回List的
jdbcTemple.queryForList(sql,class);
难道这个list里面也必须是一个字段吗?我自己定义的属性不可以吗?
我以为底层会用反射帮我赋值?但是没有。想知道为什么。
[b]问题补充:[/b]
这些我都知道。
我现在使用的反射机制已经实现了查询全部返回List类型了。
我在想。有没有什么办法可以那么做。哈哈。就是传递个类型就可以返回该类型的对象。其实可以的。我在思考着尝试。
就是传递个类型就可以返回该类型的对象。。。
含有RowMapper参数的方法目的不就是这个吗?而且从实践来看,采取自定义Rowmapper的方式比采用发射来完成要合理的多,要减少很多开销;而且Spring好像已经提供了通过反射完成拼装对象的方法,具体信息可以查看SimpleJdbcTemplate(2.5以后);采用SimpleJdbcTemplate要比普通的方便很多。
应该是 JdbcTemple.queryForObject 返回都是单行单列一个数据,也就是只能返回一个字段的
不能用select [color=red]*[/color] from ....
JdbcTemple.queryForObject方法只能返回一条记录的,你这都返回一个list
应该用jdbcTemplate.queryForList
jdbcTemple.queryForList(sql,class);
这个方法返回的是 多行单列数据,也就是说 list里不是javabean对象,而是String、int 等等类型的数据 就像是 select name from user 查询出来的结果一样
如果你想返回List建议使用hibernate
spring它本身已经封装好了这些行为,你自然是修改不了它的,除非你自己去实现一个嘛
如果需要可以给你一个我写的泛型框架 QQ357033502