–
图书类
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 滞纳金收费标准–每天/元
模拟借书、还书、以及图书管理数据
在数据库中见数据库-以及建表,并插入数据
<--! db.properties 里面对应配置driver、url、user、password,也可直接写在配置文档中,替换resource-->
<--! setting 一般用于配置log4j ,可以不配置-->
<--!name对应的driver、url、user、password 名称固定-->
<--! 配置文件,将相关的映射文件引入到配置文件中用xml路径或者Mapper接口-->
<--! 用xml路径对应resource 要换成/ xml文件里面对应的sql语句,需要配置-->
<--! Mapper接口对应class用. 用于定义方法,对应dao层的接口-->
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();
}
}
Mapper接口
public interface UserMapper {
User getUserByName(String name);
}
对应接口的xml,编写sql语句(包括动态sql语句)
//通过namespace对应Mapper
//通过id对应Mapper的方法
/编写相应的属性,尽量与数据库中的字段名保持一致
public class User {
private int user_id;
private String user_name;
private String phone;
private String user_type;
}
//接口--定义方法
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;
}
此处用的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");
}
<%
//获取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();
}%>
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文件