mybatis图书馆管理小项目

使用mybatis做图书馆管理的小项目

要求如图
要求如上图所示,建表也按照图中的来,过程就不附上0.0

  • 简单分析一下怎么去完成要求

1.实现用户登录

前端页面通过表单提交用户名信息

servlet接收前端用户名数据,将其作为参数调用dao层对应接口到数据库的用户表中查询相关信息,并返回用户对象(若不存在该用户则返回null)

servlet根据返回的对象用户对象是否为null分别设置对应的session属性,并通过重定向跳转到前端页面进行进行信息展示

2.查看图书信息

前端用户通过表单提交请求,并跳转到servlet进行处理

servlet调用dao层相关接口进行查询,返回一个图书实体类集合

servlet对集合进行判断,若为null则向前端提交查询失败会话,否则将集合通过session传递到前端

通过jsp的标签对集合进行遍历,显示所有图书信息

展示图书信息的同时给用户提供查询借书信息选项,提交的信息包括用户姓名,书名,图书类),并通过模糊查询到后端进行数据查询

3.模糊查询

servlet接收前端传入的字符属性

由于接收的属性为String类型,可能会存在空值,这时需要使用mybatis的动态SQL技术从而避免SQL异常

由于参数为多个,所以采用map集合的方式进行参数传递

查询后返回一个借书信息对象,在servlet对此对象进行判断是否为空

若为空,则提示用户未查询到相关信息,否则展示相关借书记录

  • 接下来就是代码时间 因为实力有限没办法讲的很清晰易懂 请各位大佬见谅 大家一起成长 ^ o ^
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://169.254.72.103:3306/book
username=kb07
password=ok
package cn.kgc.book.entity;

import java.util.Date;

public class Book {
    private int book_id;
    private String book_name;
    private double price;
    private int store;
    private String book_des;
    private String type_name;
    private int default_date;
    private double delay_money_per_day;
    private String user_name;
    private Date borrow_date;
    private Date back_date;
    private double delay_money;

    public Date getBorrow_date() {
        return borrow_date;
    }

    public void setBorrow_date(Date borrow_date) {
        this.borrow_date = borrow_date;
    }

    public Date getBack_date() {
        return back_date;
    }

    public void setBack_date(Date back_date) {
        this.back_date = back_date;
    }

    public double getDelay_money() {
        return delay_money;
    }

    public void setDelay_money(double delay_money) {
        this.delay_money = delay_money;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public int getBook_id() {
        return book_id;
    }

    public void setBook_id(int book_id) {
        this.book_id = book_id;
    }

    public String getBook_name() {
        return book_name;
    }

    public void setBook_name(String book_name) {
        this.book_name = book_name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getStore() {
        return store;
    }

    public void setStore(int store) {
        this.store = store;
    }

    public String getBook_des() {
        return book_des;
    }

    public void setBook_des(String book_des) {
        this.book_des = book_des;
    }

    public String getType_name() {
        return type_name;
    }

    public void setType_name(String type_name) {
        this.type_name = type_name;
    }

    public int getDefault_date() {
        return default_date;
    }

    public void setDefault_date(int default_date) {
        this.default_date = default_date;
    }

    public double getDelay_money_per_day() {
        return delay_money_per_day;
    }

    public void setDelay_money_per_day(double delay_money_per_day) {
        this.delay_money_per_day = delay_money_per_day;
    }
}

package cn.kgc.book.entity;


public class User {
    private int user_id;
    private String user_name;
    private String user_grade;
    private String user_type;

    public int getUser_id() {
        return user_id;
    }

    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_grade() {
        return user_grade;
    }

    public void setUser_grade(String user_grade) {
        this.user_grade = user_grade;
    }

    public String getUser_type() {
        return user_type;
    }

    public void setUser_type(String user_type) {
        this.user_type = user_type;
    }
}

package cn.kgc.book.dao;

import cn.kgc.book.entity.Book;
import cn.kgc.book.entity.User;

import java.util.List;
import java.util.Map;


public interface BookMapper {
    User queryUserByName(String username);
    List<Book> queryAllBooks();
    List<Book> queryBooksByName(Map<String,String> map);
}
<?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="cn.kgc.book.dao.BookMapper">
<select id="queryUserByName" parameterType="string" resultType="user">
    select * from tb_user where user_name=#{username};
</select>
    <select id="queryAllBooks" resultType="Book">
        select * from tb_book join book_type on type_id=book_type;
    </select>
    <select id="queryBooksByName" parameterType="map" resultType="book">
        select * from tb_book join tb_borrow on tb_book.book_id=borrow_id
        join book_type on tb_book.book_type=book_type.type_id
        join tb_user on tb_borrow.user_id=tb_user.user_id
        <where>
            <if test="bookname!=null and bookname!=''">
                book_name like concat("%",#{bookname},"%");
            </if>
            <if test="username!=null and username!=''">
                and user_name like concat("%",#{username},"%");
            </if>

        </where>
    </select>
</mapper>
package cn.kgc.book.servlet;

import cn.kgc.book.dao.BookMapper;
import cn.kgc.book.entity.Book;
import cn.kgc.book.util.MapperConfig;
import com.sun.org.apache.regexp.internal.RE;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;


public class GetAllBooks extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session= req.getSession();
        SqlSession sqlSession= MapperConfig.getSession();
        List<Book> list=sqlSession.getMapper(BookMapper.class).queryAllBooks();
        if (list!=null){
            session.setAttribute("bookList",list);
            resp.sendRedirect("showBooks.jsp");
        }
    }
}
package cn.kgc.book.servlet;

import cn.kgc.book.dao.BookMapper;
import cn.kgc.book.entity.Book;
import cn.kgc.book.util.MapperConfig;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class GetBookByNameServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session=req.getSession();
        String bookname=req.getParameter("bookname");
        String username=req.getParameter("username");
        String type=req.getParameter("type");

        Map<String,String> map=new HashMap();
        map.put("bookname",bookname);
        map.put("username",username);
        map.put("type",type);
        SqlSession sqlSession= MapperConfig.getSession();
        System.out.println(bookname);
        List<Book> list=sqlSession.getMapper(BookMapper.class).queryBooksByName(map);
        System.out.println(list.get(0).getBook_name());
        if (list==null){
            session.setAttribute("msg","信息查询失败");
        }else {
            session.setAttribute("msg","信息查询成功");
            session.setAttribute("list",list);
            resp.sendRedirect("showBorrowList.jsp");
        }
    }
}
package cn.kgc.book.servlet;

import cn.kgc.book.dao.BookMapper;
import cn.kgc.book.entity.User;
import cn.kgc.book.util.MapperConfig;
import org.apache.ibatis.session.SqlSession;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;


public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session=req.getSession();
        String username=req.getParameter("username");
        User user=null;
        //判空
        if (username==null || username.equals("")){
            session.setAttribute("msg","用户不存在");
            resp.sendRedirect("index.jsp");
        }else {
            SqlSession sqlSession= MapperConfig.getSession();
            user=sqlSession.getMapper(BookMapper.class).queryUserByName(username);
            if (user!=null){
                session.setAttribute("msg","登录成功");
                session.setAttribute("user",user);
                resp.sendRedirect("loginSuccess.jsp");
            }else {
                session.setAttribute("msg","用户不存在");
                resp.sendRedirect("index.jsp");
            }
        }
    }
}

package cn.kgc.book.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class MapperConfig {
    private static SqlSessionFactory factory;
    static {
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        try {
            InputStream is= Resources.getResourceAsStream("mybatis-config.xml");
            factory=builder.build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSession(){
        return factory.openSession(true);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首页</title>
  </head>
  <body>
  <%
  Object msg=session.getAttribute("msg");
  if (msg==null || msg.equals("")){
  %>
  <form action="login.do" method="get">
    <p>用户名:<input type="text" name="username"></p>
    <p><input type="submit" value="点我登录"></p>
  </form>
  <%
  }else {
      out.print(msg);
  %>
  <form action="login.do" method="get">
    <p>用户名:<input type="text" name="username"></p>
    <p><input type="submit" value="点我登录"></p>
  </form>
  <%
  }
  session.removeAttribute("msg");
  %>
  </body>
</html>

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--登录-->
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>cn.kgc.book.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login.do</url-pattern>
    </servlet-mapping>
    <!--查看所有书籍-->
    <servlet>
        <servlet-name>GetAllBooks</servlet-name>
        <servlet-class>cn.kgc.book.servlet.GetAllBooks</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetAllBooks</servlet-name>
        <url-pattern>/getAllBooks.do</url-pattern>
    </servlet-mapping>
    <!--按条件查找信息-->
    <servlet>
        <servlet-name>GetBookByNameServlet</servlet-name>
        <servlet-class>cn.kgc.book.servlet.GetBookByNameServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetBookByNameServlet</servlet-name>
        <url-pattern>/getBookByName.do</url-pattern>
    </servlet-mapping>
</web-app>

或有错误 仅供参考 见谅~~~~~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值