欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用jdbcTemplate查询返回自定义对象集合代码示例

程序员文章站 2023-08-19 15:55:18
1、在userinfo.java中添加一个map转换为userinfo的方法 public static userinfo toobject(map map) {...

1、在userinfo.java中添加一个map转换为userinfo的方法

public static userinfo toobject(map map) {
	userinfo userinfo = new userinfo();
	userinfo.setid((integer) map.get(id));
	userinfo.setuname((string) map.get(uname));
	userinfo.setunumber((integer) map.get(unumber));
	userinfo.seturegistertime((date) map.get(uregister_time));
	return userinfo;
}
public static list toobject(list> lists){
	list userinfos = new arraylist();
	for (map map : lists) {
		userinfo userinfo = userinfo.toobject(map);
		if (userinfo != null) {
			userinfos.add(userinfo);
		}
	}
	return userinfos;
}

dao层实现:

public list findall() { 
  string sql = select * from user_info; 
  list<map<string,object>> lists = jdbctemplate.queryforlist(sq); 
  return userinfo.toobject(lists); 
} 

总结:这种方法能够实现,但是速度相比很慢。

2、使用jdbctemplate.query(sql,rowmapper)方式实现:

dao层实现

jdbctemplate.query(sql, new rowmapper<userinfo>() { 
  @override 
  public userinfo maprow(resultset rs, int rownum) throws sqlexception { 
    userinfo userinfo = new userinfo(); 
    userinfo.setuname(rs.getstring("uname")); 
    userinfo.setunumber(rs.getint("unumber")); 
    userinfo.seturegistertime(rs.getdate("uregister_time")); 
    return userinfo; 
  } 
}); 

总结:在其他查询方法中无法重用。

3、 使用rowmapper实现接口方式,覆盖maprow方法:

public class userinfo implements rowmapper, serializable{ 
  @override 
  public userinfo maprow(resultset rs, int rownum) throws sqlexception { 
    userinfo userinfo = new userinfo(); 
    userinfo.setid(rs.getint(id)); 
    userinfo.setuname(rs.getstring(uname)); 
    userinfo.setunumber(rs.getint(unumber)); 
    userinfo.seturegistertime(rs.getdate(uregister_time)); 
    return userinfo; 
  } 
} 

dao层实现:

public userinfo getbyid(integer id) { 
  string sql = select * from user_info where id = ?; 
  userinfo userinfo = jdbctemplate.queryforobject(sql, new userinfo(), new object[] { id }); 
  return userinfo; 
} 
 
public list findall() { 
  string sql = select * from user_info; 
  list userinfos = jdbctemplate.query(sql, new userinfo()); 
  return userinfos; 
} 

4、dao层使用

jdbctemplate.query(sql.tostring(), new beanpropertyrowmapper<userinfo>(qsfymxb.class));

spring 提供了一个便利的rowmapper实现-----beanpropertyrowmapper

它可自动将一行数据映射到指定类的实例中 它首先将这个类实例化,然后通过名称匹配的方式,映射到属性中去。

例如:属性名称(vehicleno)匹配到同名列或带下划线的同名列(vehicle_no)。如果某个属性不匹配则返回属性值为null

总结

以上就是本文关于使用jdbctemplate查询返回自定义对象集合代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!