超市管理系统(springboot+springMVC+mybatils)

本文档详细介绍了使用SpringBoot、SpringMVC和MyBatis构建的超市管理系统。从maven工程的资源获取,到源代码解析,包括首页模块、账单管理、供应商管理和用户管理四大模块的功能实现,如登录、首页显示、账单增删改查、供应商增删改查、用户管理等。通过阅读,读者可以掌握如何运用这些技术进行实际项目开发。
摘要由CSDN通过智能技术生成

maven工程的深入

注意该项目适合java初学者中级进度学习、此工程主要为maven入门学习,涉及springboot+springMVC+mybatils

一、资源的获取

1.1项目源代码

1.2数据库源码

github 源代码路径 https://github.com/zhangweiweiweiweiwei/superMarket.git

二、源代码解析

2.1代码框架

在这里插入图片描述

2.2代码流程

(1)前端html页面,访问controller,根据 @RequestMapping多次路径拼接定位到某方法。
(2)获取前端传入的信息存入Maps集合,并根据封装Json数据转为对应的实体类类型数据,controller层将使用service层对象调用serviceImpl实现类的方法,对将返回的数据也存入model,最后返回前端页面,前端调用。
(3)service层将使用Mapper层对象调用接口类的方法,显示数据则返回信息,否则返回为空。
(4)Mapper层接口将@Select访问数据库,访问该层方法将获取该方法的定义的对象(可为实体对象类型、也可为封装实体类型的List集合)

2.3代码功能精析

2.3.1首页模块

(1)登录功能(登录前首页)
在这里插入图片描述

*login.html(核心代码 17-28行)
功能描述:【前端用户输入用户名和密码,传入后端路径为@{/login}。】

*framecontroller(核心代码 70-92行)
功能描述:【framecontroller获取前端输入的用户名和密码,转为String类型,访问后端userService的findByMobileAndPwd(userName, userPassword)方法;对返回的user对象数据进行判断,若user对象为空,说明数据库不存在改用户,登录失败,再次返回login.html页面再次登录。】

//      登录
    @RequestMapping("/login")
    public String login(HttpServletRequest request, HttpSession session, Model model) throws IOException {
   

        //获取前端用户账号和密码
        String userName = request.getParameter("userName");
        String userPassword = request.getParameter("userPassword");

        //访问后端userService的findByMobileAndPwd方法
        User user = userService.findByMobileAndPwd(userName, userPassword);
        if (user == null) {
   
            //登录失败
            //model.addAttribute("error", "登录失败");
            //out.print("<script language=\"javascript\">alert('登录失败!');</script>");
            return "login";

        } else {
   
            session.setAttribute("user", user.getId());
            session.setAttribute("userName", user.getUserName());
            session.setAttribute("userCode", user.getUserCode());
            return "frame";
        }
    }

*userservice (核心代码 26-30行)
功能描述:【从FrameController的登录方法访问,获取参数后访问userMapper的findByMobileAndPwd(userName, userPassword)方法,返回userservice User 类型的数据】

@Override
    public User findByMobileAndPwd(String userName, String userPassword) {
   
        return userMapper.findByMobileAndPwd(userName,userPassword);
    }

*usermapper(核心代码 20-22行)
功能描述:【根据用户名密码查找用户,返回userservice User 类型的数据】

//  根据用户名密码查找用户(登录  UserService访问)
    @Select("select * from smbms_user where userName =#{userName} and userPassword =#{userPassword}")
    public User findByMobileAndPwd(String userName, String userPassword);

(2)首页显示功能(登录后首页)
在这里插入图片描述

*frame.html(核心代码 13-29行)
功能描述:【页面嵌套出top.html left.html main.html】

*framecontroller(核心代码 21-32行 )
功能描述:【frame页面将嵌套显示出top.html left.html main.html】

 @GetMapping("/top")
    public String top() {
   
        return "top";
    }

    @GetMapping("/left")
    public String left() {
   
        return "left";
    }

    @GetMapping("/main")
    public String mian() {
   
        return "main";
    }

*left.html(核心代码 14-37行)
功能描述:【对五个模块照片显示,并且以超链接形式,传入后端路径分别为@{/toBillList}、@{/toProviderList}、@{/toUserlist}、@{/toUpdatePwd} 而退出系统直接在顶层开启新网页login登录页面】

<body class="frame-bd">
	<ul class="left-menu">
		<li><a th:href="@{/toBillList}" target="mainFrame"><img
				th:src="@{/images/btn_bill.gif}" />
		</a>
		</li>
		<li><a th:href="@{/toProviderList}" target="mainFrame"><img
				th:src="@{/images/btn_suppliers.gif}" />
		</a>
		</li>
		<li><a th:href="@{/toUserlist}" target="mainFrame"><img
				th:src="@{/images/btn_users.gif}" />
		</a>
		</li>	
		<li><a th:href="@{/toUpdatePwd}" target="mainFrame"><img
				th:src="@{/images/btn_password.gif}" />
		</a>
		</li>
		<li><a href="" onClick="logout();"><img
				th:src="@{/images/btn_exit.gif}" />
		</a>
		</li>
	</ul>
</body>

*framecontroller(核心代码 41-67行)
功能描述:【此处功能与后续模块一致,将在模块内实现】

//跳转到ProviderController里的list方法
    @RequestMapping("/toProviderList")
    public String toProviderList() {
   
        return "redirect:/provider/list";
    }

    //跳转到BillController里的list方法
    @RequestMapping("/toBillList")
    public String toBillList() {
   
        return "redirect:/bill/list";
    }

    //跳转到UserController里的list方法
    @RequestMapping("/toUserlist")
    public String toUserlist() {
   
        return "redirect:/user/list";
    }

    @RequestMapping("/toUpdatePwd")
    public String toUpdatePwd(HttpSession session, Model model) {
   
        Long userid = (Long) session.getAttribute("user");
        Integer id = userid.intValue();
        User user = userService.findById(id);
        model.addAttribute("user", user);
        return "updatePwd";
    }
2.3.2账单管理模块

(1)页面显示功能
在这里插入图片描述

*left.html (核心代码 17-18行)
功能描述:【以超链接形式,传入后端路径分别为@{/toBillList}】

*framecontroller(核心代码 47-49行)
功能描述:【路径重定位/provider/list】

//跳转到BillController里的list方法
    @RequestMapping("/toBillList")
    public String toBillList() {
   
        return "redirect:/bill/list";
    }

*billcontroller(核心代码 34-42行)
功能描述:【 账单管理页面(显示账单信息) 从session中获取userCode编码,访问billService的findall方法 对返回的Result类型的List集合bills存入model】

//      账单管理页面(显示账单信息) 从session中获取userCode编码,访问billService的findall
    @RequestMapping("/list")
    public String billPage(Model model,HttpSession session){
   
        String userCode = (String) session.getAttribute("userCode");
        List<Result> bills = billService.findall(userCode);

        model.addAttribute("bills",bills);
        return "billList";
    }

*billservice(核心代码 29-31行)
功能描述:【账单显示 访问billMapper的findall,对返回的Result类型的List集合返回到controller层】

//账单显示  访问billMapper的findall
    @Override
    public List<Result> findall(String userCode) {
   
        return billMapper.findall(userCode);
    }

*billmapper(核心代码 20-22行)
功能描述:【查询所有账单,匹配billcode和usercode(查询bill表以及provider表的proName 组合为实体类Result对象,返回到service层】

//     查询所有账单,匹配billcode和usercode(查询bill表以及provider表的proName 组合为实
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值