为了账号安全,请及时绑定邮箱和手机立即绑定

本节视频最后根据姓名的查询怎么可能得到字段信息呢?

		GoddessDAO gd = new GoddessDAO();
		
		//根据姓名查询女神信息
		List<Goddess> gs = gd.query("小美");
		System.out.println("查询结果有"+gs.size()+"条记录:");
		for(int i=0;i<gs.size();i++){
			System.out.println(gs.get(i).toString());
		}

查询结果为:

select * from imooc_goddess where user_name=?
查询结果有1条记录:
entity.Goddess@5ce65a89

视频中的result.get(i)得到的应该是小美这个Goddess对象吧?

不明白为什么老师不需要getter方法、只用toString()是怎么得到Goddess对象的字段信息的!!!

正在回答

3 回答

重写tostring方法了

0 回复 有任何疑惑可以回复我~

我自己找到如何遍历女神信息的方法了!老师估计是漏录了部分代码。

以下是GoddessAction中,利用Field类遍历所查找女神信息的方法:

		for(int i=0;i<gs.size();i++){
			System.out.println("******第"+(i+1)+"条记录******");
			for(Field f:gs.get(i).getClass().getDeclaredFields()){
				//private字段需要先获取权限
				f.setAccessible(true);
				//注意get方法括号内是类类型的实例(obj或类名.Class.newInstance())
				System.out.println(f.getName()+"="+f.get(gs.get(i)));//之前报错写的是f.get(f)
			}
		}


1 回复 有任何疑惑可以回复我~
/**
	 * 在query方法中传入参数,如根据女神姓名来查询
	 * @return
	 * @throws SQLException 
	 */
	public List<Goddess> query(String name) throws SQLException{
		//实例化和变量初始化
		List<Goddess> gs = new ArrayList<Goddess>();
		Goddess g = null;
		StringBuilder sb = new StringBuilder();
		sb.append("select * from imooc_goddess ");
		//sql查询条件最好分开写
		sb.append("where user_name=?");
		
		Connection conn = DBUtil.getConnection();
//			//这种方式明显对维护不友好,弃用
//			Statement stmt = conn.createStatement();
//			ResultSet rs = stmt.executeQuery("select user_name,age from imooc_goddess");
		//sql预编译
		PreparedStatement ptmt = conn.prepareStatement(sb.toString());
		ptmt.setString(1, name);
		System.out.println(sb.toString());
		//执行查询
		ResultSet rs = ptmt.executeQuery();
		
		//每循环一次需要new一个Goddess对象,并add到gs中
		while(rs.next()){
			g = new Goddess();
			g.setId(rs.getInt("id"));
			g.setUser_name(rs.getString("user_name"));
			g.setAge(rs.getInt("age"));
			g.setSex(rs.getInt("sex"));
			//注意:java.sql.Date是java.util.Date的子集,可直接转换!!!
			g.setBirthday(rs.getDate("birthday"));
			g.setEmail(rs.getString("email"));
			g.setMobile(rs.getString("mobile"));
			g.setCreate_date(rs.getDate("create_date"));
			g.setCreate_user(rs.getString("create_user"));
			g.setUpdate_date(rs.getDate("update_date"));
			g.setUpdate_user(rs.getString("Update_user"));
			g.setIsdel(rs.getInt("isdel"));
			gs.add(g);
		}
		
		return gs;
	}

这是我的含参的query方法

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

本节视频最后根据姓名的查询怎么可能得到字段信息呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信