图书管理系统共分为六个页面——登录页面、班级管理页面、学生管理页面、图书管理页面、借阅管理页面、用户管理页面。在该系统中,班级管理页面、学生管理页面、图书管理页面、借阅管理页面、用户管理页面等五个页面实现的功能类似,即获取全部班级(学生、图书、借阅、用户)信息,添加、修改、删除班级(学生、图书、借阅、用户),获取班级(学生、图书、借阅、用户)的详细信息。因此,这里以班级管理页面为例,实现这些功能。
一 登录页面
登录功能实现的基本思路为:根据账号查询数据库的用户,若不存在,则将报错;否则,将查询得到的数据与用户输入的数据进行校验,若不一致,则提示账号或密码错误;否则,登录成功,保存用户信息。
其具体代码实现为:
public Object login(@RequestBody User user, HttpServletRequest req){
//1 根据账号查询数据库的用户,不存在报错
User params=new User();
params.setUsername(user.getUsername());
//查询出来的用户
User exist=userService.selectOne(params);
//若查不到,则账号不存在
if(exist==null){
throw new AppException("账号不存在");
}
//2 校验密码
if(!exist.getPassword().equals(user.getPassword())){
throw new AppException("账号或密码错误");
}
//3 登录成功,创建Session,保存信息
HttpSession session=req.getSession();
//保存用户信息:致键要与拦截器校验的键一
session.setAttribute("user",exist);
//统一响应会封装
return null;
}
二 班级管理页面
1 获取全部班级信息
获取全部班级信息功能,即查询数据库班级表中所有班级的信息并返回到前端。
public Object query(Classes c){
PageHelper.startPage(c);
List<Classes> classes=classesService.query();
PageHelper.clearPage();
return classes;
}
注:在班级管理页面只需要查询班级表信息就可以,因此,可以直接调用已经存在的方法;而在学生管理页面、借阅信息管理页面等页面,需要查询多个表,因此不能直接调用已有的方法,需要自己实现sql语句。如学生管理页面其sql语句为
select
s.id, s.student_name, s.student_no, s.id_card, s.student_email, s.classes_id, s.create_time,
c.id c_id,
c.classes_name c_classes_name,
c.classes_graduate_year c_classes_graduate_year,
c.classes_major c_classes_major,
c.classes_desc c_classes_desc,
c.create_time c_create_time
from student s,classes c
where s.classes_id=c.id
<if test="id!=null">
and s.id=#{id}
</if>
并在.xml文件的<resultMap></resuletMap>中添加语句:
<association property="classes" columnPrefix="c_" resultMap="org.example.mapper.ClassesMapper.BaseResultMap"></association>
2 添加班级
添加班级信息,即将用户输入的班级信息添加至数据库,此时可以直接调用已存在的方法,其他页面类似。
public Object add(@RequestBody Classes classes){
int n=classesService.add(classes);
return null;
}
3 修改班级信息
实现修改班级信息,首先获取修改班级的基本信息,在该信息的基础上,修改信息,并将数据库中的信息进行更新,其他页面类似。
/获取详细信息
public Object queryById(Integer id){
Classes classes=classesService.queryById(id);
return classes;
}
//修改信息
public Object update(@RequestBody Classes classes){
int n=classesService.update(classes);
return null;
}
4 删除信息
删除班级信息,即将班级信息从数据库中删除,此时可以直接调用已存在的方法,其他页面类似。
public Object delete(@RequestParam List<Integer> ids) {
int n = classesService.delete(ids);
return null;
}
注:删除信息时,只能删除没有学生的班级,否则会报错,删除其他信息也类似。其主要原因是:在建立数据表时,采用外键的形式,是严格模式。若想删除数据,可以改为级联模式,即删除班级数据,关联的学生数据也一起删除。