连接两个mysql java表并将其作为列表发送到jsp

q7solyqu  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(357)

我有两本台本和打字本。一种类型可以分配给许多书。
这是读书课。

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;
    }

    }

另一个用于查询的类-select with join。我对列表和发送列表到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。我有问题如何发送到列表变量从两个类。

lxkprmvk

lxkprmvk1#

如果你使用@onetomany关系。你应该加上 List<Book> field 为了 Type 班级,以及 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 ),如上所述,请不要只复制代码!

相关问题