简易图书管理系统的CRUD

技术栈:

前端:获取到的源码

后端:Java,Springboot,Mybatis,Mybatis-puls,Spring-MVC,Maven

主要功能:用户登录和管理员登录,进行图书管理的增删改查,批量删除等,读者管理,借阅记录管理,统计分析,类别管理,库存管理,修改密码的;

包的建立

MyBatis-Plus的 ServiceImpl 类是一个实现了 IService 接口的抽象类,它提供了对数据库操作的通用实现,从而减少了重复代码的编写。在使用 ServiceImpl 时,你通常会创建自己的服务实现类,继承自 ServiceImpl,并指定相应的 Mapper 接口和实体类。这样,服务类就继承了一系列 CRUD(创建、读取、更新、删除)操作。
1. 定义实体类

首先,定义实体类 T,一个简单的 user 类:

@Data               //lombok提供类的get、set、equals、hashCode、toString等方法
@TableName("user")   //实体类与数据库中名为 user 的表进行映射。
public class User {
    private Integer id;
    private String  email;
    private String  password;
    private String  username;
    private String  phone;
    private String  image;
}
//定义的字段以数据库的字段为参考
 
2. 创建 Mapper 接口

创建一个继承 BaseMapper 的 Mapper 接口,该接口类型参数为你的实体类:

@Repository     //修饰哪个类表明这个类具有对数据库CRUD的功能,用在持久层的接口上
public interface UserMapper extends BaseMapper<User> {
}
3. 创建 Service 接口

创建一个服务接口,该接口继承 IService<T>,其中 T 是你的实体类:

public interface UserService extends IService<User> {
    boolean login(String userName, String userPwd);  //界面进去的判断方法
}
4. 实现 ServiceImpl 类

创建一个服务实现类,继承 ServiceImpl<M, T>,其中 M 是 Mapper 接口,T 是实体类:

@Service   //一个类声明为业务逻辑组件,将其对象存入 Spring 容器。在控制器类中,通过注入该组件的实例,即可调用其中的方法。
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    
    @Override
    public boolean login(String userName, String userPwd) {
        QueryWrapper<User>qw=new QueryWrapper<>(); //一个条件构造器,用于构建数据库查询的条件
        qw.eq("username",userName);
        User user = this.baseMapper.selectOne(qw);
        System.out.println(user);
        if (user==null){
            return false;
        }
        String s = DigestUtil.md5Hex(userPwd);
        System.out.println(user.getPassword());
        if (s.equals(user.getPassword())){
            return true;
        }else {
            return false;
        }
    }
}
5. 使用服务类

登录界面控制层

在你的应用程序中,现在可以通过注入的方式使用 UserServiceImpl 来进行[数据库操作]

@Controller                         //可以处理来自客户端的请求,并返回相应的响应结果。
public class AccountController {      //登录界面控制层
    
    @Autowired                      //标记需要注入的成员变量、构造函数或者方法
    private UserService userService;
​
    @Autowired                      // 自动注入 ReaderService 实例
    private ReaderService readerService;
​
    @RequestMapping("toRegister")     //类的父路径下追加方法上注解中的地址会访问该方法
    public String toRegister(){
        return "register";
    }
​
    @RequestMapping("toLogin")
    public String toLogin(){
        return "index";
    }
    
    @RequestMapping("login")
    public String login(String userName, String userPwd, Model model, HttpSession session){
                                                    //Model接口用于封装数据,这些数据会被传递到视图中。
        System.out.println("接收到的 userName: " + userName);
        if ("admin".equals(userName)){
            boolean i=userService.login(userName,userPwd);
            if (i){
                QueryWrapper<User> qw=new QueryWrapper<>(); //创建查询包装器
                qw.eq("username",userName);
                User user = userService.getOne(qw);
                
    //session.setAttribute()通过将这些用户相关的信息存储在会话中,可在同一个会话的不同请求和处理过程中共享和使用这些数据
                session.setAttribute("image",user.getImage());
                session.setAttribute("currentUser",userName);   //Session中存储用户名
                session.setAttribute("password",user.getPassword());
                session.setAttribute("email",user.getEmail());
                
                return "waterMainMenu";
            }else {
                model.addAttribute("msg","用户名或密码错误!");   //封装了查询数据
                return "index";
            }
        }else {
            boolean i=readerService.login(userName,userPwd);
            if (i){

                session.setAttribute("currentUser",userName);
                return "waterMainMenu1";
            }else {
                
                //模型(Model)中添加一个属性(Attribute),这个属性的名称是"msg",
​​​​​​​                其对应的值是"用户名或密码错误!"
                model.addAttribute("msg","用户名或密码错误!");
                return "index";
            }
        }
    }
​

示例图

以上仅是小白简单学习

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值