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

来源:2-5 JDBC实战---搭建模型层 Ⅲ

秦家小小神

2017-07-29 10:12

		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回答

  • 慕姐936777
    2018-03-25 17:09:42

    重写tostring方法了

  • 秦家小小神
    2017-07-29 11:39:58

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

    以下是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)
    			}
    		}


  • 秦家小小神
    2017-07-29 10:23:28
    /**
    	 * 在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方法

JDBC之 “ 对岸的女孩看过来”

一起领略JDBC的奥秘,为进一步学习集成框架打下良好的基础

99327 学习 · 856 问题

查看课程

相似问题