MyBatis-对图书管理系统的登录以及部分查询查询操作(管理员部分)

一 登录界面 (此处省略密码校验部分) 以及 所有图书信息展示

1、数据库设计:


图书类
book_id 图书编码
book_name 图书名称
price 图书价格
store 图书库存
des 图书简介
book_type 图书类型
借书表
book_id 图书编码
borrow_id 借阅人编码
borrow_date 借阅日期
back_date 默认归还日期
归还表
book_id 图书编码
borrow_id 借阅人编码
back_date 实际归还日期
dely_money 滞纳金
用户表
user_id 用户编码
user_name 用户名称
phone 电话
user_type 用户类型
图书类型表
type_id 类型编码
type_name 类型名称
default_date 默认可借时长(单位:天)
delay_money_per_day 滞纳金收费标准–每天/元
模拟借书、还书、以及图书管理数据
在数据库中见数据库-以及建表,并插入数据

2、登录界面

1、配置环境,连接数据库



    <--! db.properties 里面对应配置driver、url、user、password,也可直接写在配置文档中,替换resource-->
    
    
    
     <--! setting 一般用于配置log4j ,可以不配置-->
        
    
    
    
    
        
            
            
             <--!name对应的driver、url、user、password 名称固定-->
                
                
                
                
            
        
    
    
    <--! 配置文件,将相关的映射文件引入到配置文件中用xml路径或者Mapper接口-->
       <--!  用xml路径对应resource 要换成/ xml文件里面对应的sql语句,需要配置-->
          <--!  Mapper接口对应class用. 用于定义方法,对应dao层的接口-->
        
    

2、抽象出数据库连接方法-放在MapperConfig中
private static SqlSessionFactory factory;
static {
    //创建工程
    SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
    try {
        //mybatis-cfg.xml mybatis的配置文件 通过流读取文件
        InputStream is= Resources.getResourceAsStream("mybatis-cfg.xml");
        factory=builder.build(is);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
//打开session
public static SqlSession getSession(){
    //在非事务的情况下开启自动提交
    return factory.openSession(true);
}
//关闭session
public static void closeSession(SqlSession session){
    if(session!=null){
        session.close();
    }
}
3、在dao层建立接口以及xml文件(user)

Mapper接口

public interface UserMapper {
    User getUserByName(String name);
}

对应接口的xml,编写sql语句(包括动态sql语句)

//通过namespace对应Mapper
//通过id对应Mapper的方法





4、编写一个实体类
/编写相应的属性,尽量与数据库中的字段名保持一致
public class User {
    private  int user_id;
    private String user_name;
    private String phone;
    private String user_type;
}
5、service层–连接servlet层以及dao层
//接口--定义方法
public interface UserService {
    public User login(String user_name);
}
//继承接口实现方法
@Override
public User login(String user_name) {
    SqlSession session = MapperConfig.getSession();
    User users = session.getMapper(UserMapper.class).getUserByName(user_name);
    System.out.println("users" + users);
    return users;
}
6、servelt层连接前台页面以及后台数据,通过service调用dao层方法方法

此处用的servlet继承父类HttpServlet,并调用父类方法

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获jsp页面传入的数据
   String user_name=req.getParameter("userName");
   //调用service方法
    UserService service=new UserServiceImpl();
    User user=service.login(user_name);
    对结果进行判断
    if(user==null){
        req.getSession().setAttribute("msg","用户不存在,请核实后登录");
        resp.sendRedirect("index.jsp");
    }else{
        req.getSession().setAttribute("msg","登录成功");
        req.getSession().setAttribute("user",user);
        resp.sendRedirect("index.jsp");
    }
7、jsp层–前台语句
<%
//获取servlet层登录判断信息
  Object msg=session.getAttribute("msg");
  Object o=session.getAttribute("user");
  if (msg!=null&&o!=null&&msg.equals("登录成功")){
    User u=(User)o ;
%>
//展示信息+判断身份

${msg}:${user.user_name} ${user.user_type.equals("管理员")?"管理员":""}

---------------------------

<% //通过对身份判断,赋予不同入口 if(u.getUser_type().equals("管理员")){ %>

点击管理所有图书

<% }else if(u.getUser_type().equals("普通用户")){ %>

商品查看界面

<% } }else{% <--!首次登录没有msg会直接到登录框--> ${msg}

<% //清除session session.invalidate(); }%>
8.配置web.xml文件

    LoginServlet
    cn.kgc.kb07.servlet.LoginServlet


    LoginServlet
    /login.do

二 图书检索的模糊查询思路:

在未输入检索关键字时展示全部的图书列表
1、需要book实体类、mybatis-cfg.xml中配置resource
//book对应的mapper–BookMapper

public interface BookMapper {
    List getBookList();//获取所有图书信息
    List getBookListByS(Map map);//通过图书名以及借书人名查看信息
    //通过Map传参,可以避免多参数的传参错乱
}

2、配置book对应的xml文件
查找所有图书信息


    

根据查询条件编写动态sql语句

 

3、BookService接口定义方法,BookServiceImpl实现类方法实现
bookService

public interface BookService {
    List getBookList();
    List getBookListByS(String book_name,String user_name);
}

BookServiceImpl


public List getBookList() {
    session= MapperConfig.getSession();
    List bookList=session.getMapper(BookMapper.class).getBookList();
    session.close();
    for (Book b:bookList
         ) {
        System.out.println(b);
    }
    return bookList;
}

public List getBookListByS(String book_name, String user_name) {
    List books = new ArrayList<>();
    Map map=new HashMap<>();
    map.put("book_name",book_name);
    map.put("user_name",user_name);
    books = session.getMapper(BookMapper.class).getBookListByS(map);
    MapperConfig.closeSession(session);
    return books;
}

4、servle方法同登录的servle方法,调用service数据即可
5、jsp页面展示
通过c标签获取数据
同时需要在jsp中配置
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>


    <--!循环遍历数据-->

    
        
图书编号 图书名称 图书价格 图书库存 图书简介 图书类型
${book.book_id} ${book.book_name} ${book.price} ${book.store} ${book.des} ${book.book_type}

6、配置xml文件

你可能感兴趣的:(mybatis,mysql)