前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >杨校老师课堂之就业信息平台

杨校老师课堂之就业信息平台

作者头像
杨校
发布2021-05-13 17:20:59
8630
发布2021-05-13 17:20:59
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈

1. 创建maven项目

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

 <groupId>cn.javabs</groupId>
    <artifactId>job</artifactId>
    <version>1.0.1-SNAPSHOT</version>
    <name>job</name>
    <description>Demo project for Spring Boot</description>

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
        <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--SpringMVC的jar包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--springboot启动器-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope><!--运行时期-->
            <optional>true</optional>
        </dependency>
        <!--MySQL数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--Lombok简化实体类的插件包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--SpringBoot启动的测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <!--数据源连接池:德鲁伊-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>
        <!--mail-->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.5.1</version>
        </dependency>
        <!--上传-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <!--分页的插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
    </dependencies>
2. 编写配置文件
# 服务器
server.port=8081

#json的时间格式:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

#模板引擎
spring.thymeleaf.mode=HTML5
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.encoding=UTF-8

# 静态资源的释放
spring.mvc.static-path-pattern=/static/**

#文件上传的大小
spring.servlet.multipart.max-file-size=2MB

# 定义 加载 开发环境下的  配置文件
#spring.profiles.active=dev

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/job?useUnicode=true&characterEncoding=utf-8&serverTimeZone=GMT
spring.datasource.username=root
spring.datasource.password=sorry

mybatis.mapper-locations=classpath:/cn/javabs/job/mapper/*.xml

#pagehelper分页插件配置
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

pagehelper.pageSize = 10

#热部署
spring.devtools.restart.enabled=true
3. 编写实体类
package cn.javabs.job.entity;

import lombok.Data;

/**
 * 用户实体类设计
 * 	1. 应聘者:  学生
 *  2. 招聘者:  公司人力资源 
 */
@Data
public class User {

    //    -----------------定义常量:--------------------
    
    final int  USER_SEX_MAN = 1;    // 性别  男
    final int  USER_SEX_WOMAN = 2;  // 性别  女
    final int  USER_SEX_UNKONW = 0; // 性别  未知
    final  String  DEFAULT_HEAD_IMGAE = "common/default_img.jpg"; // 默认的用户头像
    final  String  DEFAULT_WORK_EXP = "应届毕业生"; // 默认是应届毕业生
    final  String  DEFAULT_DEGREE = "其他"; // 默认是其他、专科、本科、研究生

//    -----------------变量:--------------------

    private int userId;

    private String username; // 用户名
    
    private String password;// 密码
    
    private String email;// 邮箱地址
  
    private String headPic = DEFAULT_HEAD_IMGAE; // 用户头像
  
    private String workExp = DEFAULT_WORK_EXP;  // 工作经验,默认是应届毕业生
 
    private String degree = DEFAULT_DEGREE;   // 学历,默认是其他

    private int sex = USER_SEX_UNKONW ;// 用户性别 默认是未知
  
    private int type ;  // 用户类别, 0-学生(应聘者);1-(公司的HR)招聘者
  
    private String mobile ;  // 手机号码

    private String selfDescription ;  // 自我描述

}
4. 编写数据持久层接口
package cn.javabs.job.mapper;

import cn.javabs.job.entity.User;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository("userMapper")
public interface UserMapper {

    /**
     * 后端获取所有用户的信息
     * @return 返回的集合
     */
   List<User> findAllUserList();

    /**
     * 按照邮箱查询用户的信息
     * @param email
     * @return 返回的对象
     */
    User findUserByEmail(String email);

    /**
     * 按照条件(用户名或者性别或者学历)查询用户信息   返回的集合
     * @param condition
     * @return
     */
    List<User> findUserByCondition(String condition);

    /**
     * 按照用户id查询用户信息
     * @param userId
     * @return  返回的对象
     */
    User findUserByUserId(int userId);
    
    /**
     * 用户登录
     *  根据用户名和密码及用户类型执行 登录
     * @param user
     * @return
     */
    User login(User user);

    int addUser(User user);
    
    int delUser(int userId);
    
    int editUser(User user);

}
5. 编写持久层映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "
                        http://mybatis.org/dtd/mybatis-3-mapper.dtd" >


<mapper namespace="cn.javabs.job.mapper.UserMapper">

    <!--添加用户-->
    <insert id="addUser" parameterType="cn.javabs.job.entity.User">
        insert into user
        <trim prefix="(" suffix=") values" suffixOverrides=",">
            <if test="username != nul and username != '' ">
                username,
            </if>
            <if test="password != nul and password != '' ">
                password,
            </if>
            <if test="headPic != nul and headPic != '' ">
                 headPic,
            </if>
            <if test="sex != nul and sex != '' ">
                    sex,
            </if>
            <if test="email != nul and email != '' ">
                    email,
            </if>
            <if test="mobile != nul and mobile != '' ">
                    mobile,
            </if>
            <if test="degree != nul and degree != '' ">
                    degree,
            </if>
            <if test="workExp != nul and workExp != '' ">
                    workExp,
            </if>
            <if test="type != nul and type != '' ">
                    type,
            </if>
            <if test="selfDescription != nul and selfDescription != '' ">
                    selfDescription,
            </if>

        </trim>
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="username != nul and username != '' ">
                #{username},
            </if>
            <if test="password != nul and password != '' ">
                #{password},
            </if>
            <if test="headPic != nul and headPic != '' ">
                #{headPic},
            </if>
            <if test="sex != nul and sex != '' ">
                #{sex},
            </if>
            <if test="email != nul and email != '' ">
                #{email},
            </if>
            <if test="mobile != nul and mobile != '' ">
                #{mobile},
            </if>
            <if test="degree != nul and degree != '' ">
                #{degree},
            </if>
            <if test="workExp != nul and workExp != '' ">
                #{workExp},
            </if>
            <if test="type != nul and type != '' ">
                #{type},
            </if>
            <if test="selfDescription != nul and selfDescription != '' ">
                #{selfDescription},
            </if>

        </trim>

    </insert>

    <!--修改用户-->
    <update id="editUser" parameterType="cn.javabs.job.entity.User">
        update user
        <set>
           <!-- <if test="username != nul and username != '' ">
                #{username},
            </if>-->
            <if test="password != nul and password != '' ">
                #{password},
            </if>
            <if test="headPic != nul and headPic != '' ">
                #{headPic},
            </if>
            <if test="sex != nul and sex != '' ">
                #{sex},
            </if>
            <if test="email != nul and email != '' ">
                #{email},
            </if>
            <if test="mobile != nul and mobile != '' ">
                #{mobile},
            </if>
            <if test="degree != nul and degree != '' ">
                #{degree},
            </if>
            <if test="workExp != nul and workExp != '' ">
                #{workExp},
            </if>
          <!--  <if test="type != nul and type != '' ">
                #{type},
            </if>-->
            <if test="selfDescription != nul and selfDescription != '' ">
                #{selfDescription},
            </if>
        </set>
            where
             userId = #{userId}
    </update>

    <!--删除用户-->
    <delete id="delUser" parameterType="int">
        delete  from user
        <where>
            <if test="userId != nul and userId != '' ">
               and userId =  #{userId},
            </if>
        </where>
    </delete>

    <!--查询所有用户-->
    <select id="findAllUserList" resultType="cn.javabs.job.entity.User">
        select * from  user
    </select>

    <!--按照邮箱查询用户的信息-->
    <select id="findUserByEmail" resultType="cn.javabs.job.entity.User" parameterType="String">
          select * from  user
            <where>
                <if test="email != nul and email != '' ">
                   and  email =  #{email},
                </if>
            </where>
    </select>

    <!--按照条件(用户名或者性别或者学历)查询用户信息   返回的集合-->
    <select id="findUserByCondition" resultType="cn.javabs.job.entity.User" parameterType="String">
        select * from  user
        <where>
            <!--用户名 进行模糊查询-->
            <if test="username != nul and username != '' ">
                and username like concat('%',#{username},'%'),
            </if>
            <if test="sex != nul and sex != '' ">
                and sex =  #{sex},
            </if>
            <if test="degree != nul and degree != '' ">
                and degree = #{degree},
            </if>
        </where>
    </select>

    <!--根据用户编号查询用户信息-->
    <select id="findUserByUserId" resultType="cn.javabs.job.entity.User" parameterType="int">
        select * from  user
        <where>
            <if test="userId != nul and userId != '' ">
                and userId = #{userId}
            </if>
        </where>
    </select>

    <!--用户登录-->
    <select id="login" resultType="cn.javabs.job.entity.User" parameterType="cn.javabs.job.entity.User">
        select * from  user
        <where>
            <if test="username != nul and username != '' ">
                and username = #{username}
            </if>
            <if test="password != nul and password != '' ">
                and password = #{password}
            </if>
            <if test="type != nul and type != '' ">
                and type = #{type}
            </if>
        </where>
    </select>
</mapper>
6. 编写业务逻辑层接口
package cn.javabs.job.service;

import cn.javabs.job.entity.User;
import java.util.List;

public interface UserService {

    List<User> getAllUserList();

    User getUserByEmail(String email);

    User getUserByUserId(int userId);

    List<User> getUserByCondition(String condition);

    User userLogin(User user);

    int deleteUser(int userId);
    
    int editUser(User user);
    
    int addUser(User user);

}
7. 编写业务逻辑层接口的实现类
package cn.javabs.job.service.impl;

import cn.javabs.job.entity.User;
import cn.javabs.job.mapper.UserMapper;
import cn.javabs.job.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service("userService")
@Transactional
public class UserServiceImpl implements UserService {

    @Resource
    @Qualifier("userMapper")
    private UserMapper userMapper;

    @Override
    public List<User> getAllUserList() {
        return userMapper.findAllUserList();
    }

    @Override
    public User getUserByEmail(String email) {
        return userMapper.findUserByEmail(email);
    }

    @Override
    public User getUserByUserId(int userId) {
        return userMapper.findUserByUserId(userId);
    }

    @Override
    public List<User> getUserByCondition(String condition) {
        return userMapper.findUserByCondition(condition);
    }

    @Override
    public User userLogin(User user) {
        return userMapper.login(user);
    }

    @Override
    public int deleteUser(int userId) {
        return userMapper.delUser(userId);
    }

    @Override
    public int editUser(User user) {
        return userMapper.editUser(user);
    }

    @Override
    public int addUser(User user) {
        return userMapper.addUser(user);
    }
}
8. 编写控制器类
package cn.javabs.job.controller;

import cn.javabs.job.entity.User;
import cn.javabs.job.service.UserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 后端用户管理的控制器
 */
@Controller
@RequestMapping("/admin/user")
public class UserController {

    @Resource
    @Qualifier("userService")
    private UserService userService;

    @Value("${pagehelper.pageSize}")
    private int pageSize;


    @RequestMapping("userList")
    public ModelAndView userList(@RequestParam(value = "pageNum",defaultValue = "1") Integer pageNum){

        PageHelper.startPage(pageNum,pageSize);

        List<User> userList = userService.getAllUserList();

        PageInfo<User> pageInfo = new PageInfo<>(userList);

        ModelAndView mv = new ModelAndView();

        mv.addObject("userList",userList);
        mv.addObject("pageInfo",pageInfo);

        mv.setViewName("user");

        return  mv;
    }

}
9. 编写页面,模板引擎
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户管理</title>

    <link rel="stylesheet" th:href="@{../static/component/style/components.css}" href="../static/component/style/components.css">
    <link rel="stylesheet" th:href="@{../static/css/bootstrap.css}" href="../static/css/bootstrap.css">
    <link rel="stylesheet" th:href="@{../static/css/plugins.css}" href="../static/css/plugins.css">
    <link rel="stylesheet" th:href="@{../static/css/main.css}" href="../static/css/main.css">
    <link rel="stylesheet" th:href="@{../static/css/themes.css}" href="../static/css/themes.css">
    <script th:src="@{../static/component/js/JQuery2.1.4.js}"></script>
    <script th:src="@{../static/component/js/bootstrap.min.js}"></script>
</head>

<body>
    <div id="body">
        <ol class="breadcrumb">
            <li class="active"><a href="#">系统</a></li>
            <li>用户列表</li>
        </ol>
        <div class="barboxs">

            <button class="btn btn-success pull-left " data-toggle="modal" data-target="#myModal" title="" data-placement="right" data-original-title="添加用户">
                <i class="fa fa-pencil-square-o"></i>
            </button>

            <button class="btn btn-danger pull-left ml10" data-toggle="tooltip" title="" data-placement="right" data-original-title="删除用户"><i class="fa fa-trash-o"></i></button>

            <div class="leftbox">
            
                <div class="liselect w300">
                    <div class="input-group">
                        <input type="text" id="example-input-typeahead" class="form-control example-typeahead" placeholder="请输入关键词">
                        <span class="input-group-btn">
                            <button class="btn btn-success"><i class="fa fa-search"></i></button>
                        </span>
                    </div>
                </div>
            </div>
        </div>
        <div class="tablebox">
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th class="text-center" width="50"><input type="checkbox" id="check5-all" name="check5-all"></th>
                        <th class="text-center">序号</th>
                        <th>用户账号</th>
                        <th>用户密码</th>
                
                        <th>电子邮件</th>
                        <th>手机号码</th>
                        <th>用户学历</th>
                        <th>用户性别</th>
                        <th>用户类别</th>
                        <th>创建时间</th>
                        <th class="text-center" width="85"><i class="fa fa-bolt"></i> 操作</th>
                    </tr>
                </thead>
                <tbody>

                    <tr th:each="user,userStatus:${userList}">
                        <td class="text-center"><input type="checkbox" id="check5-td1" name="check5-td1"></td>
                        <td class="cell-small text-center"><span th:text="${userStatus.index}">序号</span></td>
                        <td th:text="${user.username}">custom_admins</td>
                        <td th:text="${user.password}">custom_admins</td>
                        <td th:text="${user.email}">custom_admins</td>
                        <td th:text="${user.mobile}">custom_admins</td>
                        <td th:text="${user.degree}">custom_admins</td>

                        <span th:if="${user.sex} == 0">
                             <td >未知</td>
                        </span>

                        <span th:if="${user.sex} == 1">
                             <td >男</td>
                        </span>
                        <span th:if="${user.sex} == 2">
                             <td >女</td>
                        </span>

                        <td th:text="${user.type}">custom_admins</td>
        
                        <td>2021-3-22 11:04:49</td>
                        <td class="text-center">
                            <div class="btn-group">
                                <a href="javascript:void(0)" class="btn btn-xs btn-info"><i class="fa fa-globe"></i></a>
                                <a href="javascript:void(0)" class="btn btn-xs btn-success"><i class="fa fa-pencil"></i></a>
                                <a href="javascript:void(0)" class="btn btn-xs btn-danger"><i class="fa fa-trash-o"></i></a>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
</body>
</html>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建maven项目
    • 2. 编写配置文件
      • 3. 编写实体类
        • 4. 编写数据持久层接口
          • 5. 编写持久层映射文件
            • 6. 编写业务逻辑层接口
              • 7. 编写业务逻辑层接口的实现类
                • 8. 编写控制器类
                  • 9. 编写页面,模板引擎
                  相关产品与服务
                  云数据库 MySQL
                  腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档