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>