首页 > 编程语言 >springboot基于Java的人力资源管理系统的设计与实现人事管理工资员工管理系统(源码+lw+部署文档+讲解等)

springboot基于Java的人力资源管理系统的设计与实现人事管理工资员工管理系统(源码+lw+部署文档+讲解等)

时间:2024-07-20 22:27:24浏览次数:9  
标签:Java String 框架 管理系统 admin 源码 user userService import

具体实现截图

技术栈

后端框架SpringBoot
采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代码的耦合性,大大提高了软件质量,面向切面编程(AOP)主要是应用动态代理的技术对代码逻辑进行分离,可以实现对代码的重用,适合于很多中大型项目应用场景。基于Spring框架非常流行,spring可以与很多优秀的框架进行整合,比如ssh、ssm等框架,Spring的开发会带来一个严重的后果就时配置文件非常多,往往一个多框架开发的项目会有好几个配置文件,这些配置文件又具有关联性,往往一个错误会导致程序崩溃,很难快速的对错误的定位,因此采用框架开发带来的问题也需要用框架解决。Springboot是基于spring的,springboot框架实现了内部的整合,不需要开发人员配置大量的配置文件,springboot也集成了springmvc框架,它是基于MVC思想的一个框架,它在传统的servlet基础上进行了封装,前台通过View视图进行页面展示,后台入口通过Controller来控制请求接受、返回,通过设计Model层来进行数据的封装和各个逻辑层之间传递。SpringMVC框架实现了对代码的分层,提高了协同开发的效率。Mybatics是一个数据库ORM框架,通过各项配置实现数据库的增删改查等操作,是一个开源的基于java的持久层框架。Mybatics它是一个半自动化的框架,可以执行自定义SQL语言、存储过程等, Mybatics在jdbc的基础上实现了动态语句的功能,通过mapper接口和动态的配置完成高效的数据库操作。 运用springboot框架开发效率不仅利用了框架的强大的功能,同时也规避了框架所带来了繁琐的配置和框架的整合,springboot是一整套的项目开发技术方案,实现了快速开发。

前端框架Vue

关于Vue简介,百度百科给出的解释是:Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。 Vue.js 是一个提供了 MVVM 风格双向数据绑定的 Javascript 库(无依赖别的js库,直接引入一个js文件就可以使用,跟jquery差不多),专注于View 层。它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷。

MySQL数据库

信息技术的快速发展使得传统的文件管理方法便显出它的不足。文件管理模式数据通用性差、不便于移植、在不同文件中存储大量重复信息、浪费存储空间、更新不便等。因此采用数据库管理技术符合信息时代的发展要求。关系型数据库是常见的、应用最广泛的数据库,关系型数据库代表有oracle、sql server和Mysql。这些流行的数据库都各自有各自的优势,有各自的应用场景。城市学院宿舍管理系统采用java进行开发,而java开发于mysql属于黄金搭档,java语言关于Mysql的研究非常的多,java与Mysql的组合性能强,开发技术全部免费。Mysql数据库相比较于传统的数据管理模式,Mysql数据库可以实现对数据的结构化分析与存储,可以利用编程语言进行数据库的操作。正常的Mysql安装包只有100多M,而且安装速度也快,对服务器的要求比较低,特别适合小型管理系统或网站。

核心代码

package com.sdms.controller;


import com.sdms.bean.system.Role;
import com.sdms.bean.system.User;
import com.sdms.service.RoleService;
import com.sdms.service.UserService;
import com.sdms.util.MyStringUtils;
import com.sdms.util.QueryResult;
import com.sdms.util.ResultUtils;
import com.sdms.vo.UserVO;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

@Controller
public class UserController {

    @Resource
    private UserService userService;

    @Resource
    private RoleService roleService;

    //使用thymeleaf模板渲染,这里的字符串指的是URL
    @RequestMapping("/admin/user-list")
    public String toUserList(Model model) {
        List<Role> roleList = roleService.findAll();
        model.addAttribute("roleList", roleList);
        return "admin/user-list";//这里的字符串指的是模板 /admin/user-list.html
    }

    //使用ajax在前端渲染

    /**
     * @param pageFromLayUI  计数方式是 1,2,3,4...,n  默认为 1 ;
     *                       但是 Pageable.page 的计数方式是 0,1,2,3,...,n-1 默认为 0
     * @param limitFromLayUI 等于 Pageable.size
     * @return 能被 layUI 接受的 JSON, 格式为 { "code": 0, "msg": "OK", count": 14, "data":[{},{},{}] }
     */
    @RequestMapping("/admin/users")
    @ResponseBody
    public ResultUtils<UserVO> findAll(@RequestParam(value = "page", defaultValue = "1") Integer pageFromLayUI,
                                       @RequestParam(value = "limit", defaultValue = "10") Integer limitFromLayUI,
                                       @RequestParam(value = "queryParam[userId]", defaultValue = "") String userId,
                                       @RequestParam(value = "queryParam[keyWord]", defaultValue = "") String keyWord,
                                       @RequestParam(value = "queryParam[roleId]", defaultValue = "-1") String roleId,
                                       @RequestParam(value = "queryParam[queryType]", defaultValue = "1") String queryType) {
        //0精确搜索
        if ("0".equals(queryType)) {
            //精确查询
            if (MyStringUtils.isNumeric(userId)) {
                //传入的用户编号是数字
                User user = userService.findUserById(Long.parseLong(userId));
                if (null != user) {
                    UserVO userVO = UserVO.convert(user);
                    List<UserVO> userVOList = new ArrayList<>();
                    userVOList.add(userVO);
                    return ResultUtils.layUITable(1L, userVOList);
                }
            }
            //传入的用户编号不是数字 或者 null==user
            return ResultUtils.layUITable(0L, new ArrayList<>());
        } else {
            //模糊查询
            User param = new User();
            if (null == keyWord) {
                keyWord = "";
            }
            String s = StringUtils.trimAllWhitespace(keyWord);
            param.setUsername(s);
            QueryResult<UserVO> queryResult;
            if ("-1".equals(roleId) || !MyStringUtils.isNumeric(roleId)) {
                //不限用户角色
                queryResult = userService.queryByKeyWordLikeNoRole(pageFromLayUI - 1, limitFromLayUI, param);
            } else {
                //限制用户角色
                queryResult = userService.queryByKeyWordLikeWithRole(pageFromLayUI - 1, limitFromLayUI, param, Long.parseLong(roleId));
            }
            //返回JSON结果
            return ResultUtils.layUITable(queryResult.getTotalCount(), queryResult.getData());
        }
    }

    //使用thymeleaf模板渲染
    @RequestMapping("/admin/user-input")
    //@RequiresPermissions(value = {"user-update", "user-add"}, logical = Logical.OR)
    public String toUserInput(Long userId, Model model) {
        if (-1 == userId) {
            model.addAttribute("operation", "添加用户");
            model.addAttribute("user", new User());
        } else {
            model.addAttribute("operation", "更新用户");
            User user = userService.findUserById(userId);
            model.addAttribute("user", user);
        }
        List<Role> roles = roleService.findAll();
        model.addAttribute("roles", roles);
        return "admin/user-input";//这里的字符串指的是 /admin/user-input.html
    }

    @RequestMapping("/admin/user-save")
    //@RequiresPermissions(value = {"user-update", "user-add"}, logical = Logical.OR)
    public String save(User user) {
        userService.save(user);
        return "redirect:/admin/user-list";
    }

    @RequestMapping("/admin/user-delete")
    //@RequiresRoles(value = "admin")
    //@RequiresPermissions({"user-delete"})
    public String deleteById(Long userId) {
        userService.deleteById(userId);
        return "redirect:/admin/user-list";
    }

    @RequestMapping("/admin/user-deleteAll")
    //@RequiresPermissions({"user-delete"})
    //@RequiresRoles(value = "admin")
    public String deleteById(String ids) {
        userService.deleteAll(ids);
        return "redirect:/admin/user-list";
    }

    @RequestMapping("/changeUserInfo")
    public String changeUserInfo(User user, HttpSession session){
        userService.changeUserInfo(user);
        session.setAttribute("user",userService.findUserById(user.getId()));
        return "redirect:/login";
    }

}

源码获取

   点击下面的链接获取源码

GitCode - 全球开发者的开源社区,开源代码托管平台GitCode是面向全球开发者的开源社区,包括原创博客,开源代码托管,代码协作,项目管理等。与开发者社区互动,提升您的研发效率和质量。icon-default.png?t=N7T8https://gitcode.com/yuanmadd/ymgg/blob/main/README.md?init=initTree

标签:Java,String,框架,管理系统,admin,源码,user,userService,import
From: https://blog.csdn.net/hehaimingg/article/details/140548969

相关文章

  • springboot基于Java的企业人才引进服务平台的设计与实现(源码+lw+部署文档+讲解等)
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代......
  • 基于SpringBoot+Vue的二手手机交易平台的详细设计和实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Java工具库——Hutool的常用方法
    Hutool-All(或简称Hutool)是一个功能强大的Java编程工具库,旨在简化Java应用程序的开发。它提供了大量的工具类和方法,涵盖了各种常见任务,包括字符串处理、日期时间操作、文件操作、网络通信、加密解密、数据转换、图像处理、JSON操作、Excel处理、邮件发送等等。以下是Hutool-All的......
  • Java学习日历(static,工具类,继承)
    staticstatic表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。特点:被该类所有对象共享不属于对象,属于类随着类的加载而加载,优先于对象存在调用方式:类名调用(推荐)对象名调用工具类帮助我们做一些事情的,但是不描述任何事物的类类名见名知意私有化构造方法......
  • JAVA学习篇(1)初学JAVA
    一.了解JAVAJava是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌......
  • Java反射
    java是面向对象的编程语言,对象,是一种具体的概念类:类是对具有相同特征或属性,具有相同行为能力的一类事物的描述或称呼对象:对象是这一类事物带有属性值,具有具体行为的个体或实例面向对象编程的语言packagetest;//定义一个类publicclassPhone{//添加一些属性......
  • Java入门知识
    Java特性和优势简单性面向对象可移植性高性能分布式动态性多线程安全性健壮性Java三大版本JavaSE:标准版(桌面程序,控制开发....)JavaME:嵌入式开发(手机,小家电....)JavaEE:E企业级开发(web端,服务器开发...)JDK、JRE、JVMJDK:JavaDevelopmentKitJRE:JavaRuntimeE......
  • java学习3
    这周的话想直接通过一个项目去进行学习,但是效果没有想象中的那么大好,我在网上抄了一个还算简单的图书管理系统,能连接数据库,将数据导入数据库。不像之前输入的数据结束程序就没了。但是只能增,没有删,改,查抄这个系统的时候出现了很多我不认识的技术栈,这时候我意识到一个完整项目是......
  • 暑假学习Java第三周
    通过本周的学习我认识到了自己有很多的不足与优点,优点是我能够把问题细化逐步分析,缺点是我的意志力不够坚定。我还了解了Java的三大特性包括:面向对象:Java是一种面向对象的编程语言,它允许程序员定义一系列关于对象和类的概念,并将这些概念作为编程的基本单位。在实际内容中,面向对象......
  • 推荐Java 杠把子技能库【Advanced Java】
    "AdvancedJava"通常是指Java编程语言及其相关技术在高级或专业层面的应用。它涵盖了Java标准版(JavaSE)、Java企业版(JavaEE,现在称为JakartaEE)和Java平台微服务版(JavaME)中的高级概念和技术。在软件开发领域,“AdvancedJava”可以指代一系列主题,包括但不限于:多线程和并发:处理线......