Mybatis(五)----级联查询练

AuthorInfo.java

package bean;

import javax.print.DocFlavor;

public class AuthorInfo {
    private Integer authorId;
    private String authorName;
    private Integer authorState;

    public AuthorInfo(){

    }

    public Integer getAuthorId() {
        return authorId;
    }

    public void setAuthorId(Integer authorId) {
        this.authorId = authorId;
    }

    public String getAuthorName() {
        return authorName;
    }

    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    public Integer getAuthorState() {
        return authorState;
    }

    public void setAuthorState(Integer authorState) {
        this.authorState = authorState;
    }

    @Override
    public String toString() {
        return "AuthorInfo{" +
                "authorId=" + authorId +
                ", authorName='" + authorName + '\'' +
                ", authorState=" + authorState +
                '}';
    }
}

BookInfo.java

package bean;

public class BookInfo {
    private Integer bookId;
    private String bookName;
    private String bookImg;
    private Integer authorId;
    private Integer pubId;
    private String bookContent;
    private Integer bookState;

    private AuthorInfo ai;
    private PubInfo pi;

    public BookInfo(){

    }

    public Integer getBookId() {
        return bookId;
    }

    public void setBookId(Integer bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getBookImg() {
        return bookImg;
    }

    public void setBookImg(String bookImg) {
        this.bookImg = bookImg;
    }

    public Integer getAuthorId() {
        return authorId;
    }

    public void setAuthorId(Integer authorId) {
        this.authorId = authorId;
    }

    public Integer getPubId() {
        return pubId;
    }

    public void setPubId(Integer pubId) {
        this.pubId = pubId;
    }

    public String getBookContent() {
        return bookContent;
    }

    public void setBookContent(String bookContent) {
        this.bookContent = bookContent;
    }

    public Integer getBookState() {
        return bookState;
    }

    public void setBookState(Integer bookState) {
        this.bookState = bookState;
    }

    public AuthorInfo getAi() {
        return ai;
    }

    public void setAi(AuthorInfo ai) {
        this.ai = ai;
    }

    public PubInfo getPi() {
        return pi;
    }

    public void setPi(PubInfo pi) {
        this.pi = pi;
    }

    @Override
    public String toString() {
        return "BookInfo{" +
                "bookId=" + bookId +
                ", bookName='" + bookName + '\'' +
                ", bookImg='" + bookImg + '\'' +
                ", authorId=" + authorId +
                ", pubId=" + pubId +
                ", bookContent='" + bookContent + '\'' +
                ", bookState=" + bookState +
                '}';
    }
}

PubInfo.java

package bean;

public class PubInfo {
    private Integer pubId;
    private String pubName;
    private Integer pubState;

    public PubInfo(){

    }

    public Integer getPubId() {
        return pubId;
    }

    public void setPubId(Integer pubId) {
        this.pubId = pubId;
    }

    public String getPubName() {
        return pubName;
    }

    public void setPubName(String pubName) {
        this.pubName = pubName;
    }

    public Integer getPubState() {
        return pubState;
    }

    public void setPubState(Integer pubState) {
        this.pubState = pubState;
    }

    @Override
    public String toString() {
        return "PubInfo{" +
                "pubId=" + pubId +
                ", pubName='" + pubName + '\'' +
                ", pubState=" + pubState +
                '}';
    }
}

AuthorMapper.java

package mapper;

import bean.AuthorInfo;

import java.util.List;

public interface AuthorMapper {
    List<AuthorInfo> findAllAuthor();
    void saveAuthor(String name);
}

AuthorMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.AuthorMapper">
    <select id="findAllAuthor" resultType="bean.AuthorInfo">
        select * from authorinfo where authorState = 1;
    </select>
    <insert id="saveAuthor">
        insert into authorinfo values(null,#{name},1)
    </insert>
</mapper>

BookMapper.java

public interface BookMapper {
    List<BookInfo> searchBook(BookInfo bi);
}

BookMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.BookMapper">
    <resultMap id="find" type="bean.BookInfo">
        <id column="bookid" property="bookId"></id>
        <result column="bookname" property="bookName"></result>
        <result column="bookcontent" property="bookContent"></result>
        <association property="ai" javaType="bean.AuthorInfo">
            <id column="authorid" property="authorId"></id>
            <result column="authorname" property="authorName"></result>
        </association>
        <association property="pi" javaType="bean.PubInfo">
            <id column="pubid" property="pubId"></id>
            <result column="pubname" property="pubName"></result>
        </association>
    </resultMap>
    <select id="searchBook" resultMap="find" parameterType="bean.BookInfo">
        select * from bookinfo b,authorinfo a,pubinfo p
        where b.authorid = a.authorid and b.pubid = p.pubid
        <if test="bookName!=null">
            and bookname like #{bookName}
        </if>
        <if test="ai!=null">
            and authorname = #{ai.authorName}
        </if>
        <if test="pi!=null">
            and pubname = #{pi.pubName}
        </if>
    </select>
</mapper>

PubMapper.java

public interface PubMapper {
    List<PubInfo> findAllPub();
    void savePub(String pubName);
}

PubMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.PubMapper">
    <select id="findAllPub" resultType="bean.PubInfo">
        select * from pubinfo;
    </select>
    <select id="savePub">
        insert into authorinfo values(null,#{pubName},1)
    </select>
</mapper>

AuthorBiz.java

public interface AuthorBiz {
    String findAllAuthor();
    void saveAuthor(String name);
}

AuthorBizImpl.java

public class AuthorBizImpl implements AuthorBiz {
    private SqlSession session = SessionUtil.session.openSession();
    private AuthorMapper am = session.getMapper(AuthorMapper.class);
    @Override
    public String findAllAuthor() {
        List<AuthorInfo> list = am.findAllAuthor();
        String str = JSONArray.toJSONString(list);
        return str;
    }

    @Override
    public void saveAuthor(String name) {
        am.saveAuthor(name);
        session.commit();
    }

}

BookBiz.java

public interface BookBiz {
   String searchBook(BookInfo bi);
}

BookBizImpl.java

public class BookBizImpl implements BookBiz {
    private BookMapper bm = SessionUtil.session.openSession().getMapper(BookMapper.class);
    @Override
    public String searchBook(BookInfo bi) {
        return JSONArray.toJSONString(bm.searchBook(bi));
    }

    public static void main(String[] args) {
        BookBiz bm = new BookBizImpl();
        System.out.println(bm.searchBook(new BookInfo()));
    }
}

AuthorServlet.java


@WebServlet("/author.do")
public class AuthorServlet extends HttpServlet {
    private AuthorBiz ab = new AuthorBizImpl();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String type = req.getParameter("type");
        if ("find".equals(type)){
            findAllAuthor(req,resp);
        }else if("save".equals(type)){
            saveAuthor(req,resp);
        }
    }

    protected void findAllAuthor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String s = ab.findAllAuthor();
        resp.setContentType("application/json;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.print(s);
    }

    protected void saveAuthor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String name = req.getParameter("name");
        ab.saveAuthor(name);
        resp.sendRedirect("author.html");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

BookServlet.java


@WebServlet("/book.do")
public class BookServlet extends HttpServlet {
    private BookBiz bb = new BookBizImpl();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String type = req.getParameter("type");
        if ("search".equals(type)){
            search(req, resp);
        }else if ("searchBook".equals(type)){
            bookSearch(req, resp);
        }
    }

    protected void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("application/json;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.print(bb.searchBook(null));
    }

    protected void bookSearch(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String bookName = req.getParameter("bookName");
        String authorName = req.getParameter("authorName");
        String pubName = req.getParameter("pubName");
        BookInfo bi = new BookInfo();
        bi.setBookName("%"+bookName+"%");
        if (!"".equals(authorName)){
            AuthorInfo ai = new AuthorInfo();
            ai.setAuthorName(authorName);
            bi.setAi(ai);
        }
        if (!"".equals(pubName)){
            PubInfo pb = new PubInfo();
            pb.setPubName(pubName);
            bi.setPi(pb);
        }
        resp.setContentType("application/json;charset=utf-8");
        PrintWriter out = resp.getWriter();
        out.print(bb.searchBook(bi));
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }
}

SessionUtil.java

public class SessionUtil {
    public static InputStream is = SessionUtil.class.getClassLoader().getResourceAsStream("config.xml");
    public static SqlSessionFactory session = new SqlSessionFactoryBuilder().build(is);
}

author.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.4.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $.post("author.do",{"type":"find"},function (data) {
                for (var i = 0; i < data.length; i++) {
                    var o = data[i];
                    $("#authorContent").append(o.authorName+"<br/>");
                }
            });
        });
    </script>
</head>
<body>
<div id="authorContent" align="center">

</div>
</body>
</html>

saveauthor.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="author.do" method="post">
    作者名字:<input type="text" name="name"/>
    <input type="hidden" name="type" value="save"/>
    <button>添加</button>
</form>
</body>
</html>

book.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图书查询页面</title>
    <script src="js/jquery-3.4.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $.post("book.do",{"type":"search"},function (data) {
                for (var i = 0; i < data.length; i++) {
                    var o = data[i];
                    var str = "<tr>";
                    str += "<td>"+(i+1)+"</td>";
                    str += "<td>"+o.bookName+"</td>";
                    str += "<td>"+o.ai.authorName+"</td>";
                    str += "<td>"+o.pi.pubName+"</td>";
                    str += "<td>"+o.bookContent+"</td>";
                    str += "</tr>";
                    $("#table").append(str);
                }
            });
        });

        function searchBook() {
            var bookName = $("#bookName").val();
            var authorName = $("#authorName").val();
            var pubName = $("#pubName").val();
            $.post("book.do",{"type":"searchBook","bookName":bookName,"authorName":authorName,"pubName":pubName},function (data) {
                $("#table").empty();
                $("#table").append("<tr>"+"<th>序号</th>"+"<th>书名</th>" + "<th>作者</th>"+"<th>出版社</th>"+"<th>简介</th>"+"</tr>");
                for (var i = 0; i < data.length; i++) {
                    var o = data[i];
                    var str = "<tr>";
                    str += "<td>"+(i+1)+"</td>";
                    str += "<td>"+o.bookName+"</td>";
                    str += "<td>"+o.ai.authorName+"</td>";
                    str += "<td>"+o.pi.pubName+"</td>";
                    str += "<td>"+o.bookContent+"</td>";
                    str += "</tr>";
                    $("#table").append(str);
                }
            })
        }
    </script>
</head>
<body>
<table border="1" align="center" width="70%">
    <tr>
        <th>书名</th>
        <td><input type="text" id="bookName"/></td>
    </tr>
    <tr>
        <th>作者姓名</th>
        <td><input type="text" id="authorName"/></td>
    </tr>
    <tr>
        <th>出版社名称</th>
        <td><input type="text" id="pubName"/></td>
    </tr>
    <tr>
        <th colspan="2">
            <button onclick="searchBook()">搜索一下</button>
        </th>
    </tr>
</table>

<table id="table" border="1" align="center" width="70%">
    <tr>
        <th>序号</th>
        <th>书名</th>
        <th>作者</th>
        <th>出版社</th>
        <th>简介</th>
    </tr>
</table>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值