多表连接处理查询结果.docx_第1页
多表连接处理查询结果.docx_第2页
多表连接处理查询结果.docx_第3页
多表连接处理查询结果.docx_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

要查询的数据存在在多个表中,需要使用这些数据,有三种方式获取(一对多)需要在一个实体类中封装另一个实体类的实体变量,(eg:list)一 通过表连接 一次性查询所有数据 a) 通过list集合获取 public List queryTeacher() /查询教师的信息Connection conn = JdbcUtilConf.getConnection();PreparedStatement pstm = null;ResultSet rs = null;String sql = select t1.user_id,t1.username,t1.password,t1.realname,t1.department,t1.role,c.course_id,c.course_name from (select * from t_user u inner join course_user cu on u.user_id = cu.u_id) t1 inner join t_course c on t1.c_id=c.course_id;List listcourse = null;List listuser = new ArrayList();User user = null;try pstm = conn.prepareStatement(sql);rs = pstm.executeQuery();Course c = null;while(rs.next()Integer cid = rs.getInt(course_id);String course = rs.getString(course_name);c = new Course(cid,course);if(!listuser.isEmpty()for(int i =0;ilistuser.size();i+)user = listuser.get(i);if(user.getUserId()=rs.getInt(user_id)for(int j =0;juser.getListcourse().size();j+)if(user.getListcourse().get(j).getCourseId()!=cid&j=user.getListcourse().size()-1)user.getListcourse().add(c);elseif(i=listuser.size()-1)listcourse = new ArrayList();listcourse.add(c);user = new User(rs.getInt(user_id),rs.getString(username),rs.getString(password),rs.getString(realname),rs.getString(department),rs.getString(role),listcourse);listuser.add(user);elselistcourse = new ArrayList();listcourse.add(c);user = new User(rs.getInt(user_id), rs.getString(username),rs.getString(password),rs.getString(realname),rs.getString(department),rs.getString(role),listcourse);listuser.add(user); catch (SQLException e) System.out.println(异常位置和信息为 +e.getMessage();e.printStackTrace();finallyJdbcUtilConf.release(rs, pstm, conn);return listuser;b) 通过map集合获取 public List findALLCourseAndTeacher() throws Exception Connection conn = null;PreparedStatement pstm = null;ResultSet rs = null;List list = new ArrayList();Map map = new HashMap();try conn=JdbcUtil.getConn();String sql=select * from t_user u join course_user cu on u.user_id = cu.u_id join t_course c on c.course_id = cu.c_id;pstm=conn.prepareStatement(sql);rs = pstm.executeQuery();while(rs.next()if(map.containsKey(rs.getString(username)Course c = new Course();c.setCourseName(rs.getString(course_name);map.get(rs.getString(username).getCourses().add(c);elseUser user = new User();user.setUserId(rs.getInt(user_id);user.setUserName(rs.getString(username);user.setPassword(rs.getString(password);user.setRealName(rs.getString(realname);user.setRole(rs.getString(role);user.setDepartment(rs.getString(department);Course c = new Course();c.setCourseName(rs.getString(course_name);user.getCourses().add(c);map.put(user.getUserName(), user);Set set = map.keySet();for (String key : set) list.add(map.get(key); catch (Exception e) e.printStackTrace();finallyJdbcUtil.release(rs, pstm, conn);return list;二 通过两个表的连接查询到与另一个表关联的字段,返回一个查询结果(所有老师的信息),再利用这个结果中的某个字段查询另一个关系表表(每个老师的id对应的课程),在servic层封装这两个查询结果,给一个实体类(封装其他实体类的实体类),三 通过不同的实体类,查询通过同一个字段(或者可以查询到相关数据的字段),通过不同的查询方法,将包含需要的信息的返回值封装到对应的对象中,在action层进行处理,将这两个实体类封装给一个集合,将集合传递给页面,遍历使用eg:Accusation acc = ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论