教师id是学生表的外键,现在前台打印学生列表,要显示学生信息和教师姓名。dao层把联合查询结果往上return时,是一个学生实体类。而学生类只有教师id没有教师名,那么如何在前端显示教师名?我现在的做法是在学生实体上加个教师名的字段,但这样就和数据库表的字段不统一了,请问这个问题一般怎么解决?
解决方案 »
- 这是用什么框架编写的
- 想学习JAVA语言,不知道从哪里入手,请各位XDJM指教下,不胜感激!
- SQL Server连接数据库出错了,求教!
- 提个很菜的问题 就当送分了~~~
- 在Servlet的服务器端增加和删除Cookie
- JAVAWEB网站开发,一对多,多对一,主表与子表(主外键)相连接,会导致主表字段在JSP页面重复出现
- Tomcat下的jsp工作目录名跟servlet名字能不能一样???
- 请教各位:如何把动态的文件生成静态的文件就象网易的新闻那样)?
- 有使用Jive的朋友吗,jive.properties文件放那儿,怎样配置,谢谢(Weblogic51环境)
- 求助, 如何在一个被@ServerEndpoint注释的类中获取项目的request?
- java web注册登录页面
- 哪位大侠给讲讲。。hibernate的一对多和左连接。。。
然后通过po得到教师名字
id name sex age address techid教师表teacherid name sex age address
select student.name,teacher.name from student left join teacher on student.techid=teacher.id
有点不解,楼主所谓的联合查询是什么?我就想不通了,dao层难道就不能返回个Object数组啊?
你有200个实体类,你dao层还要写200个返回实体的方法啊?
List<Object[]> mmsList = query.list();
for (Object[] obj : mmsList) {
System.out.println(obj[0]);//你查的值有几列就继续obj[0]
}
${}标签完全可以,后台,3楼的方法是可以的,只是查询一些信息,然后关联老师表,查询的信息,最后都扔到session里,然后在前台显示就可以了PS:不解的是,老师和学生应该是多对多吧,为什么不弄一张中间表呢
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* @author NONE
* @date 2011-11-04
*/
public class DataServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
List<Object[]> objArray=getDateSource();
req.setAttribute("objArray", objArray);
req.getRequestDispatcher("resultData.jsp").forward(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
/**
* 获得数据源
* 实际上这些数据都是你从数据中查出来,
* 我现在只是模拟的做几个数据
* @return
*/
private List<Object[]> getDateSource()
{
List<Object[]> list=new ArrayList<Object[]>();
Object[] obj1={"1","孙悟空","唐僧"};
Object[] obj2={"1","猪八戒","唐僧"};
Object[] obj3={"1","沙和尚","唐僧"};
list.add(obj1);
list.add(obj2);
list.add(obj3);
return list;
}}
前台jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><table>
<tr><td>编号</td><td>学生姓名</td><td>老师姓名</td></tr>
<%
List<Object[]> objArray=(List<Object[]>)request.getAttribute("objArray");
for(int i=0;i<objArray.size();i++)
{
Object[] obj = objArray.get(i);
%>
<tr><td><%=obj[0].toString() %></td><td><%=obj[1].toString() %></td><td><%=obj[2].toString() %></td></tr>
<%
}%>
</table></body>
</html>
结果编号 学生姓名 老师姓名
1 孙悟空 唐僧
1 猪八戒 唐僧
1 沙和尚 唐僧
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* @author NONE
* @date 2011-11-04
*/
public class DataServlet extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
List<Object[]> objArray=getDateSource();
req.setAttribute("objArray", objArray);
req.getRequestDispatcher("resultData.jsp").forward(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
/**
* 获得数据源
* 实际上这些数据都是你从数据中查出来,
* 我现在只是模拟的做几个数据
* @return
*/
private List<Object[]> getDateSource()
{
List<Object[]> list=new ArrayList<Object[]>();
Object[] obj1={"1","孙悟空","唐僧"};
Object[] obj2={"1","猪八戒","唐僧"};
Object[] obj3={"1","沙和尚","唐僧"};
list.add(obj1);
list.add(obj2);
list.add(obj3);
return list;
}}前台jsp<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><table>
<tr><td>编号</td><td>学生姓名</td><td>老师姓名</td></tr>
<%
List<Object[]> objArray=(List<Object[]>)request.getAttribute("objArray");
for(int i=0;i<objArray.size();i++)
{
Object[] obj = objArray.get(i);
%>
<tr><td><%=obj[0].toString() %></td><td><%=obj[1].toString() %></td><td><%=obj[2].toString() %></td></tr>
<%
}%>
</table></body>
</html>结果编号 学生姓名 老师姓名
1 孙悟空 唐僧
1 猪八戒 唐僧
1 沙和尚 唐僧
如果用框架的话,就不会这么麻烦了,前台也不会出现java代码了,像现在用的比较多的struts2,前台很多东西都直接写标签了!