SpringBoot 班级管理系统-->多条件查询功能模块 代码开源 通用mapper Swagger UI

在这里插入图片描述

  • 项目结构
    在这里插入图片描述
create database en004;
use en004;
# 班级表
create table tb_class(
                         c_id varchar(32) primary key comment '班级ID',
                         c_name varchar(50) comment '班级名称',
                         `desc` varchar(200) comment '班级描述'
);

insert into tb_class(`c_id`,`c_name`,`desc`) values('c001','Java12班','。。。。');
insert into tb_class(`c_id`,`c_name`,`desc`) values('c002','Java34班','。。。。');

# 学生表
create table tb_student(
                           s_id varchar(32) primary key comment '学生ID',
                           sname varchar(50) comment '姓名',
                           age int comment '年龄',
                           birthday date comment '生日',
                           c_id varchar(32)
);

alter table tb_student add constraint foreign key (c_id) references tb_class (c_id);

insert into tb_student(`s_id`,`sname`,`age`,`birthday`,`c_id`) values('s001','赵三',19,'2001-01-17','c001');
insert into tb_student(`s_id`,`sname`,`age`,`birthday`,`c_id`) values('s002','钱四',19,'2001-05-16','c001');
insert into tb_student(`s_id`,`sname`,`age`,`birthday`,`c_id`) values('s003','孙五',18,'2002-03-15','c001');
insert into tb_student(`s_id`,`sname`,`age`,`birthday`,`c_id`) values('s004','李三',19,'2001-04-14','c002');
insert into tb_student(`s_id`,`sname`,`age`,`birthday`,`c_id`) values('s005','周四',19,'2001-02-13','c002');
insert into tb_student(`s_id`,`sname`,`age`,`birthday`,`c_id`) values('s006','王五',18,'2002-06-12','c002');
  • resources
  • 在这里插入图片描述
<?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="com.czxy.mapper.StudentMapper">
    <resultMap id="studentResultMap" type="com.czxy.domain.Student">
        <id property="sId" column="s_id"></id>
        <id property="cId" column="c_id"></id>
        <result property="sname" column="sname"></result>
        <result property="age" column="age"></result>
        <result property="birthday" column="birthday"></result>
        <association property="aClasses" column="c_id" select="com.czxy.mapper.ClassesMapper.selectByPrimaryKey"></association>
    </resultMap>

    <select id="findAll" resultMap="studentResultMap">
        select * from tb_student
        <where>
            <if test="className !=null and className != ''">
                and c_id = #{className}
            </if>
            <if test="studentName !=null and studentName != ''">
                and sname like '%${studentName}%'
            </if>
            <if test="startAge !=null and startAge != ''">
                and age >= #{startAge}
            </if>
            <if test="endAge !=null and endAge != ''">
                and age &lt;= #{endAge}
            </if>
        </where>

    </select>
</mapper>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
欢迎来到首页~
<a href="student_list.html">查询学生列表</a>
</body>
</html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>添加学生</title>
</head>
<body>
    <table border="1">
        <tr>
            <td>所属班级:</td>
            <td>
                <select name="" id="">
                    <option value="">--请选择班级--</option>
                    <option value="">Java12</option>
                    <option value="">Java34</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>学生ID:</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td>姓名</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td>年龄</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td>生日</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td></td>
            <td>
                <input type="button" value="添加">
                <input type="button" value="返回">
            </td>
        </tr>
    </table>
</body>
</html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>修改学生</title>
</head>
<body>
    <table border="1">
        <tr>
            <td>所属班级:</td>
            <td>
                <select name="" id="">
                    <option value="">--请选择班级--</option>
                    <option value="">Java12</option>
                    <option value="">Java34</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>学生ID:</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td>姓名</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td>年龄</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td>生日</td>
            <td><input type="text"></td>
        </tr>
        <tr>
            <td></td>
            <td>
                <input type="button" value="修改">
                <input type="button" value="返回">
            </td>
        </tr>
    </table>
</body>
</html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>雇员列表</title>
    <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
    <script>
        $(function () {
            $.ajax({
                "url":"/classes",
                "type":"get",
                "dataType":"json",
                "success":function (data) {
                    $(data.data).each(function (index,classes) {
                        var obj =`<option value="${classes.cId}">${classes.cName}</option>`
                        $("#className").append(obj)
                    })
                }
            })
            findAll()
        })
            function findAll() {
                var student={
                    "className":$("#className").val(),
                    "studentName":$("#studentName").val(),
                    "startAge":$("#startAge").val(),
                    "endAge":$("#endAge").val()
                }
                $.ajax({
                    "url":"/student/condition",
                    "type":"post",
                    "contentType":"application/json;charset=UTF-8",
                    "data":JSON.stringify(student),
                    "dataType":"json",
                    "success":function (data) {
                        $("#tid").html(`<tr>
                                            <td>学生ID</td>
                                            <td>班级</td>
                                            <td>姓名</td>
                                            <td>年龄</td>
                                            <td>生日</td>
                                            <td>操作</td>
                                        </tr>`)
                        if (data.code==1){
                            $(data.data).each(function (index,student) {
                                var obj =`        <tr>
                                                    <td>${student.sId}</td>
                                                    <td>${student?student.aClasses.cName:''}</td>
                                                    <td>${student.sname}</td>
                                                    <td>${student.age}</td>
                                                    <td>${student.birthday}</td>
                                                    <td>
                                                        <a href="student_edit.html?id=${student.sId}">修改</a>
                                                    </td>
                                                </tr>`
                                $("#tid").append(obj)
                            })
                        }
                    },
                    "error":function () {
                        alert("操作错误")
                    }
                })
            }


    </script>
</head>
<body>
    <a href="index.html">返回首页</a>
    <a href="student_add.html">添加学生</a> <br/>
    <table >
        <tr>
            <td>班级</td>
            <td>
                <select name="" id="className">
                    <option value="">--选择班级--</option>
                </select>
            </td>
            <td>姓名:</td>
            <td>
                <input type="text" placeholder="请输入姓名" size="10" id="studentName">
            </td>
            <td>年龄:</td>
            <td>
                <input type="text" placeholder="请输入开始年龄" size="10" id="startAge">
                --
                <input type="text" placeholder="请输入结束年龄" size="10" id="endAge">
            </td>
            <td><input type="button" value="查询" onclick="findAll()"></td>
        </tr>
    </table>
    <hr />
    <table border="1" width="800" id="tid">
        <tr>
            <td>学生ID</td>
            <td>班级</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>生日</td>
            <td>操作</td>
        </tr>
<!--        <tr>-->
<!--            <td>s001</td>-->
<!--            <td>Java34班</td>-->
<!--            <td>张三</td>-->
<!--            <td>18</td>-->
<!--            <td>2018-09-12</td>-->
<!--            <td>-->
<!--                <a href="student_edit.html">修改</a>-->
<!--            </td>-->
<!--        </tr>-->
    </table>
</body>
</html>
  • application.properties

server.port=8080
server.port=8080
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/en004?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.druid.initial-size=1
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
mapper.not-empty=false
mapper.identity=MYSQL
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*.xml
logging.level.com.czxy.dao=debug

src–>main–>java

在这里插入图片描述

新项目使用Swagger UI自动生成接口文档,不需要频繁更新接口文档,保证接口文档与代码的一致,值得学习。

在这里插入图片描述

package com.czxy.controller;

import com.czxy.domain.Classes;
import com.czxy.service.ClassesService;
import com.czxy.vo.BaseResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * Created by xxx on 2020/9/28.
 */
@RestController
@RequestMapping("/classes")
public class ClassesController {
    @Resource
    private ClassesService classesService;
    @GetMapping
    public BaseResult findAll(){
        List<Classes>list= classesService.findAll();
        return BaseResult.ok("查询成功",list);
    }
}
package com.czxy.controller;

import com.czxy.domain.Student;
import com.czxy.service.StudentService;
import com.czxy.vo.BaseResult;
import com.czxy.vo.StudentVo;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * Created by xxx on 2020/9/28.
 */
@RestController
@RequestMapping("/student")
public class StudentController {
    @Resource
    private StudentService studentService;
    @PostMapping("/condition")
    public BaseResult findAll(@RequestBody StudentVo studentVo){
        List<Student>list=studentService.
                findAll(studentVo);
        return BaseResult.ok("查询成功",list);
    }
}
package com.czxy.domain;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Created by xxx on 2020/9/28.
 */
@Table(name = "tb_class")
public class Classes {
    @Id
    @Column(name = "c_id")
    private String cId;
    @Column(name = "c_name")
    private String cName;
    @Column(name = "`desc`")
    private String desc;

    public Classes() {
    }

    public Classes(String cId, String cName, String desc) {
        this.cId = cId;
        this.cName = cName;
        this.desc = desc;
    }

    public String getcId() {
        return cId;
    }

    public void setcId(String cId) {
        this.cId = cId;
    }

    public String getcName() {
        return cName;
    }

    public void setcName(String cName) {
        this.cName = cName;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    @Override
    public String toString() {
        return "Class{" +
                "cId='" + cId + '\'' +
                ", cName='" + cName + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}
package com.czxy.domain;

import com.fasterxml.jackson.annotation.JsonFormat;

import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;

/**
 * Created by xxx on 2020/9/28.
 */
public class Student {
    @Id
    @Column(name = "s_id")
    private String sId;
    @Column(name = "sname")
    private String sname;
    @Column(name = "age")
    private Integer age;
    @Column(name = "birthday")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date birthday;
    @Column(name = "c_id")
    private String cId;

    private Classes aClasses;

    public Student() {
    }

    public Student(String sId, String sname, Integer age, Date birthday, String cId, Classes aClasses) {
        this.sId = sId;
        this.sname = sname;
        this.age = age;
        this.birthday = birthday;
        this.cId = cId;
        this.aClasses = aClasses;
    }

    public String getsId() {
        return sId;
    }

    public void setsId(String sId) {
        this.sId = sId;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getcId() {
        return cId;
    }

    public void setcId(String cId) {
        this.cId = cId;
    }

    public Classes getaClasses() {
        return aClasses;
    }

    public void setaClasses(Classes aClasses) {
        this.aClasses = aClasses;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sId='" + sId + '\'' +
                ", sname='" + sname + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                ", cId='" + cId + '\'' +
                ", aClass=" + aClasses +
                '}';
    }
}
package com.czxy.mapper;

import com.czxy.domain.Classes;
import tk.mybatis.mapper.common.Mapper;

/**
 * Created by xxx on 2020/9/28.
 */
@org.apache.ibatis.annotations.Mapper
public interface ClassesMapper extends Mapper<Classes> {
}
package com.czxy.mapper;

import com.czxy.domain.Student;
import com.czxy.vo.StudentVo;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * Created by xxx on 2020/9/28.
 */
@org.apache.ibatis.annotations.Mapper
public interface StudentMapper extends Mapper<Student> {
    List<Student> findAll(StudentVo studentVo);
}
package com.czxy.service;

import com.czxy.domain.Classes;
import com.czxy.mapper.ClassesMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

/**
 * Created by xxx on 2020/9/28.
 */
@Service
@Transactional
public class ClassesService {
    @Resource
    private ClassesMapper classesMapper;

    public List<Classes> findAll() {
        return classesMapper.selectAll();
    }
}
package com.czxy.service;

import com.czxy.domain.Student;
import com.czxy.mapper.StudentMapper;
import com.czxy.vo.StudentVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

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

/**
 * Created by xxx on 2020/9/28.
 */
@Service
@Transactional
public class StudentService {
    @Resource
    private StudentMapper studentMapper;

    public List<Student> findAll(StudentVo studentVo) {
        return studentMapper.findAll(studentVo);
    }
}
package com.czxy.vo;

import java.util.HashMap;
import java.util.Map;

/**
 * @author xxx
 * @email xxx
 */
public class BaseResult<T> {

    //成功状态码
    public static final int OK = 1;
    //失败状态码
    public static final int ERROR = 0;

    //返回码
    private Integer code;
    //返回消息
    private String message;

    //存放数据
    private T data;
    //其他数据
    private Map<String,Object> other = new HashMap<>();

    public BaseResult() {

    }

    public BaseResult(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    public BaseResult(Integer code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    /**
     * 快捷成功BaseResult对象
     * @param message
     * @return
     */
    public static BaseResult ok(String message){
        return new BaseResult(BaseResult.OK , message);
    }

    public static BaseResult ok(String message, Object data){
        return new BaseResult(BaseResult.OK , message, data );
    }

    /**
     * 快捷失败BaseResult对象
     * @param message
     * @return
     */
    public static BaseResult error(String message){
        return new BaseResult(BaseResult.ERROR , message);
    }

    /**
     * 自定义数据区域
     * @param key
     * @param msg
     * @return
     */
    public BaseResult append(String key , Object msg){
        other.put(key , msg);
        return this;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public T getData() {
        return data;
    }

    public Map<String, Object> getOther() {
        return other;
    }
}
package com.czxy.vo;

/**
 * Created by xxx on 2020/9/28.
 */
public class StudentVo {
    private String className;
    private String studentName;
    private Integer startAge;
    private Integer endAge;

    public StudentVo() {
    }

    public StudentVo(String className, String studentName, Integer startAge, Integer endAge) {
        this.className = className;
        this.studentName = studentName;
        this.startAge = startAge;
        this.endAge = endAge;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public Integer getStartAge() {
        return startAge;
    }

    public void setStartAge(Integer startAge) {
        this.startAge = startAge;
    }

    public Integer getEndAge() {
        return endAge;
    }

    public void setEndAge(Integer endAge) {
        this.endAge = endAge;
    }

    @Override
    public String toString() {
        return "StudentVo{" +
                "className='" + className + '\'' +
                ", studentName='" + studentName + '\'' +
                ", startAge=" + startAge +
                ", endAge=" + endAge +
                '}';
    }
}
package com.czxy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Created by xxx on 2020/9/28.
 */
@SpringBootApplication
public class ClassesApplication {
    public static void main(String[] args) {
        SpringApplication.run(ClassesApplication.class,args);
    }
}
  • jquery-3.3.1.js

http://way2tutorial.com/jquery/jquery_download.php

pom文件

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.czxy</groupId>
    <artifactId>exam-classmanagement</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 父工程 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!-- jar包版本 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mybatis.starter.version>1.3.2</mybatis.starter.version>
        <mapper.starter.version>2.0.2</mapper.starter.version>
        <mysql.version>5.1.32</mysql.version>
        <pageHelper.starter.version>1.2.5</pageHelper.starter.version>
        <durid.starter.version>1.1.10</durid.starter.version>
    </properties>

    <!-- 导入需要依赖(坐标/jar包)   -->
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- mybatis启动器 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.starter.version}</version>
        </dependency>
        <!-- 通用Mapper启动器 -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>${mapper.starter.version}</version>
        </dependency>
        <!-- 分页助手启动器 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>${pageHelper.starter.version}</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!-- Druid连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${durid.starter.version}</version>
        </dependency>
        <!--swagger2-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

    </dependencies>

</project>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值