首页 > 解决方案 > 加入两个表 Mysql Java 并将其作为列表发送到 jsp

问题描述

我有两个表书和类型。一种类型可以分配给许多书籍。

这是书类。

    public class Book {
    private int idbook;
    private String name;
    private int type_idtype;



    public int getIdbook() {
        return idbook;
    }

    public void setIdbook(int idbook) {
        this.idbook = idbook;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public int getType_idtype() {
        return type_idtype;
    }

    public void setType_idtype(int type_idtype) {
        this.type_idtype = type_idtype;
    }
}

类型的另一个类:

    public class Type {
    private int idtype;
    private String typename;

    public int getIdtype() {
        return idtype;
    }

    public void setIdtype(int idtype) {
        this.idtype = idtype;
    }

    public String getTypename() {
        return typename;
    }

    public void setTypename(String typename) {
        this.typename = typename;
    }

    }

另一个查询类 - 使用连接选择。我有列表和发送列表到 jsp 的问题。

        Statement stmt;
        stmt = conn.createStatement();

        String sql =  "SELECT book.name, type.typename from book Join type 
       on type.idtype=book.type_idtype";



        ResultSet rs = stmt.executeQuery(sql);
        Book b;
        Type t;
        List<Book> list = new ArrayList<Book>();


        while(rs.next())
        {
            int count = rs.getRow();
            b= new Book();
            t=new Type();
            b.setName(rs.getString("name"));
            t.setTypename(rs.getString("typename"));
            list.add(b);

        }

        request.getSession().setAttribute("list", list);

        response.sendRedirect("booksjsp.jsp");
        stmt.close();
        conn.close();

列表应该发送到jsp。

   <% List list = (List)session.getAttribute("list"); %>

    <table border="1">

        <tr>

            <th>Name</th>
           <th>Name</th>


        </tr>
        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
        <c:forEach items="${list}" var="element">
            <tr> 
                <td>${element.name}</td>
                <td>${element.typename}</td>
            </tr>
        </c:forEach>

    </table>

我可以用一张桌子选择并将其发送到jsp。我有问题如何发送以列出两个类的变量。

标签: javamysqllistjsp

解决方案


如果您使用 @OneToMany 关系。您应该添加List<Book> fieldType,并将Type字段添加到Book类。然后在选择之后,你应该检索每本书,并为此设置它的类型,相反,设置要键入的书籍列表。这样它就可以工作了。

在您的代码中,您没有设置任何 t 来预订。

        int count = rs.getRow();
        b = new Book();
        t = new Type();
        b.setName(rs.getString("name"));
        t.setTypename(rs.getString("typename"));
        list.add(b);

它应该是这样的

        int count = rs.getRow();
        b = new Book();
        t = new Type();
        b.setName(rs.getString("name"));
        t.setTypename(rs.getString("typename"));
        b.setType(t);
        list.add(b);

接着<td>${element.type.typename}</td>

请确保您已添加字段Type type),正如我上面所说,请不要只复制代码!


推荐阅读