当前位置: 首页 > news >正文

欢迎访问中国建设银行网站个人客户重庆在建项目查询

欢迎访问中国建设银行网站个人客户,重庆在建项目查询,百度推广充值必须5000吗,dedecms网站地图怎么做SSM02 此时我们已经做好了登录模块接下来可以做一下学生管理系统的增删改查操作 首先&#xff0c;我们应当有一个登录成功后的主界面 在webapp下新建 1.main.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

SSM02

此时我们已经做好了登录模块接下来可以做一下学生管理系统的增删改查操作

首先,我们应当有一个登录成功后的主界面

在webapp下新建

1.main.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script><script src="js/jquery.min.js"></script><!-- 引入样式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><!-- 引入组件库 --><script src="https://unpkg.com/element-ui/lib/index.js"></script><style>* {margin: 0;padding: 0;}.el-header {background-color: #B3C0D1;color: #333;line-height: 60px;}.el-tabs__header {margin: 0;}.el-aside {color: #333;height: 640px;}.el-main {padding: 0;}</style>
</head>
<body>
<div id="app"><el-container style="height: 500px; border: 1px solid #eee"><el-header style="text-align: right; font-size: 12px"><span>欢迎用户:</span><el-dropdown><i class="el-icon-setting" style="margin-right: 15px"></i><el-dropdown-menu slot="dropdown"><el-dropdown-item>查看</el-dropdown-item><el-dropdown-item>新增</el-dropdown-item><el-dropdown-item>删除</el-dropdown-item></el-dropdown-menu></el-dropdown><span>{{userInfo.ename}}</span></el-header><el-container><el-aside width="200px" style="background-color: rgb(238, 241, 246)"><el-menu><el-submenu v-for="p in permissionArr" :index="p.id"><template slot="title"><i :class="p.icon"></i>{{p.title}}</template><el-menu-item-group><el-menu-item v-for="sp in p.subMenu" :index="sp.id"@click="addTabs(sp)">{{sp.title}}</el-menu-item></el-menu-item-group></el-submenu></el-menu></el-aside><el-main><el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"><el-tab-panekey="asd"label="欢迎页"name="asd"><iframe src="http://www.douyu.com" style="border: none;width: 99%;height: 600px;"></iframe></el-tab-pane><el-tab-panev-for="(item, index) in editableTabs":key="item.id":label="item.title":name="item.id"><iframe :src="item.content" style="border: none;width: 99%;height: 600px;"></iframe></el-tab-pane></el-tabs></el-main></el-container></el-container>
</div>
<script>$.get("/ssm/emp/getInfo", function (backData) {app.userInfo = backData.data.userInfoapp.permissionArr = backData.data.permissionInfo})var app = new Vue({el: "#app",data: {tableData: [],editableTabsValue: "asd",editableTabs: [],userInfo: {},permissionArr: [],},methods: {addTabs(data) {if (this.editableTabs.indexOf(data) < 0) {console.log(this.editableTabs)this.editableTabs.push(data);}this.editableTabsValue = data.id;},removeTab(targetName) {let tabs = this.editableTabs;let activeName = this.editableTabsValue;if (activeName === targetName) {tabs.forEach((tab, index) => {if (tab.id === targetName) {let nextTab = tabs[index + 1] || tabs[index - 1];if (nextTab) {activeName = nextTab.id;}}});}this.editableTabsValue = activeName;this.editableTabs = tabs.filter(tab => tab.id !== targetName);},}})
</script>
</body>
</html>

在这个页面中,我们点击业务管理中的学生管理,就可以在右侧访问学生管理的界面。其他模块可以自行添加

进入学生管理页面,我们首先要在页面中展示学生信息

先在webapp下新建views/student/list.html

2.list.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="../../js/vue.js"></script><script src="../../js/jquery.min.js"></script><!-- 引入样式 --><link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"><!-- 引入组件库 --><script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
<div id="app"><el-input v-model="queryInfo.name" placeholder="请输入名字" style="display: inline-block;width: 200px;"></el-input><el-input v-model="queryInfo.minAge" placeholder="请输入最小年龄"style="display: inline-block;width: 200px;"></el-input><el-input v-model="queryInfo.maxAge" placeholder="请输入最大年龄"style="display: inline-block;width: 200px;"></el-input><el-button type="primary" icon="el-icon-search" @click="searchData()">搜索</el-button><el-button type="primary">上传<i class="el-icon-upload el-icon--right"></i></el-button><el-button type="primary">下载<i class="el-icon-download el-icon--right"></i></el-button><el-button type="success" round @click="openAddStu()">添加学生</el-button><el-table:data="tableData"borderstyle="width: 100%"><el-table-columnprop="id"label="编号"></el-table-column><el-table-columnprop="name"label="姓名"></el-table-column><el-table-columnprop="age"label="年龄"></el-table-column><el-table-columnprop="address"label="地址"></el-table-column><el-table-columnlabel="班级"><template slot-scope="scope">{{scope.row.grade.gname}}</template></el-table-column><el-table-columnlabel="头像"><template slot-scope="scope"><img v-bind:src="scope.row.headImg" width="50px"/></template></el-table-column><el-table-columnlabel="操作"><template slot-scope="scope"><el-button @click="deleteStudent(scope.row.id)" type="danger" icon="el-icon-delete" circle></el-button><el-button @click="openUpdateStu(scope.row.id)" type="primary" icon="el-icon-edit" circle></el-button></template></el-table-column></el-table><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="1":page-sizes="[5, 10, 15, 20]":page-size="5"layout="total, sizes, prev, pager, next, jumper":total="t"></el-pagination><el-dialog :title="titlename" :visible.sync="dialogFormVisible"><el-form :model="stuInfo" :rules="rules" ref="stuInfo"><el-form-item label="学生姓名" prop="sname"><el-input v-model="stuInfo.sname" autocomplete="off"></el-input></el-form-item><el-form-item label="学生年龄" prop="sage"><el-input v-model="stuInfo.sage" autocomplete="off"></el-input></el-form-item><el-form-item label="学生地址" prop="saddress"><el-input v-model="stuInfo.saddress" autocomplete="off"></el-input></el-form-item><el-form-item label="学生班级" prop="gid"><el-select placeholder="请选择班级" v-model="stuInfo.gid"><el-option v-for="g in gradeArr" :label="g.gname" :value="g.id"></el-option></el-select></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="addStudent()">确 定</el-button></div></el-dialog>
</div><script>var app = new Vue({el: "#app",data: {titlename: "",dialogFormVisible: false,queryInfo: {},stuInfo: {},tableData: [],gradeArr: [],size: 5,t: 100,rules: {sname: [{required: true, message: '请输入姓名', trigger: 'blur'},],sage: [{required: true, message: '请输入年龄', trigger: 'blur'},],saddress: [{required: true, message: '请输入地址', trigger: 'blur'},],gid: [{required: true, message: '请选择班级', trigger: 'blur'},]}},methods: {openUpdateStu(id) {//请求班级的数据$.get("/ssm/grade/list", function (backData) {app.gradeArr = backData.data$.get("/ssm/stu/get/" + id, function (backData) {app.stuInfo = backData.dataapp.titlename = "修改学生"app.dialogFormVisible = true})})},addStudent() {this.$refs["stuInfo"].validate((valid) => {if (valid) {var path = app.titlename === "添加学生" ? "/ssm/stu/add" : "/ssm/stu/update"//发送ajax请求到后台$.post(path, app.stuInfo, function (backData) {if (backData.code == 1) {app.$message({type: 'success',message: '操作成功!'});window.location.reload()} else {app.$message({type: 'danger',message: '操作失败!'});}})}});},openAddStu() {//请求班级的数据$.get("/ssm/grade/list", function (backData) {app.gradeArr = backData.dataapp.stuInfo = {}app.titlename = "添加学生"app.dialogFormVisible = true})},deleteStudent(id) {this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {$.get("/ssm/stu/delete/" + id, function (backData) {if (backData.code === 1) {app.$message({type: 'success',message: '删除成功!'});window.location.reload()} else {app.$message({type: 'danger',message: '删除失败!'});}});});},handleSizeChange(val) {app.size = valgetStudentData(1, app.size)},handleCurrentChange(val) {getStudentData(val, app.size)},searchData() {getStudentData(1, app.size)}}})function getStudentData(a, b) {app.queryInfo.pageNo = a;app.queryInfo.pageCount = b;$.post("/ssm/stu/query", app.queryInfo, function (backData) {app.tableData = backData.data.currentDataapp.t = backData.data.totalCount})}getStudentData(1, 5)
</script>
</body>
</html>

在数据正常展示时,页面效果如下

在这里插入图片描述

接下来进行数据的增删改查操作,此处只进行流程分析,源码在文章后边

3流程分析

当我们进入到学生管理界面,首先需要查询数据库中的数据,并且把他显示在页面当中

我们使用的是ElementUI提供的分页查询的代码。首先要发送post请求到"/ssm/stu/query"获取数据

  1. 在controller文件夹下创建StudentController用来处理请求的分发其中包括有
    1. 获取全部学生数据
    2. 根据ID删除学生
    3. 添加学生
    4. 根据ID获取单个学生
    5. 更新学生信息
  2. 在StudentController接收到请求时会调用service层的方法
  3. 首先有一个StudentService接口其中写了上述的五个方法
  4. 在新建StudentService的实现类,其中写的是业务处理的具体流程
  5. 在实现类中,我们想要实现业务需求,我们就要去调用mapper层中的方法去连接数据库进行数据的读取
  6. mapper层又要去找对应的mapper.xml配置文件进行sql语句的编写

所以这是一个连贯的过程,这里不再过多赘述

当获取到的数据响应到页面,这时一个完整的业务流程才算完毕

我们在实现类中可能会遇到实体类传参所以还要新建一些实体类,这些类放在pojo文件夹下

源码如下

4.controller层

4.1StudentController

package com.aaa.ssm.controller;import com.aaa.ssm.pojo.vo.StudentQuery;
import com.aaa.ssm.pojo.vo.StudentVO;
import com.aaa.ssm.result.AjaxResult;
import com.aaa.ssm.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @Author Grg* @Date 2023/9/18 17:49* @PackageName:com.aaa.ssm.controller* @ClassName: StudentController* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/@RestController
@RequestMapping("stu")
public class StudentController {@Autowiredprivate StudentService studentService;@RequestMapping("query")public AjaxResult queryStudent(StudentQuery query) {return studentService.queryStudent(query);}@RequestMapping("delete/{id}")public AjaxResult deleteStudent(@PathVariable("id") Integer id) {return studentService.deleteStudent(id);}@RequestMapping("add")public AjaxResult addStudent(StudentVO studentVO) {return studentService.addStudent(studentVO);}@RequestMapping("get/{id}")public AjaxResult getStudentById(@PathVariable("id") Integer id) {return studentService.getStudentById(id);}@RequestMapping("update")public AjaxResult updateStudent(StudentVO studentVO) {return studentService.updateStudent(studentVO);}}

4.2EmpController

package com.aaa.ssm.controller;import com.aaa.ssm.result.AjaxResult;
import com.aaa.ssm.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @Author Grg* @Date 2023/9/17 14:49* @PackageName:com.aaa.ssm.controller* @ClassName: EmpController* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@RestController
@RequestMapping("emp")
public class EmpController {@Autowiredprivate EmpService empService;@RequestMapping("login")public AjaxResult login(String username, String password) {return empService.login(username, password);}@RequestMapping("getInfo")public AjaxResult getInfo() {return empService.getInfo();}
}

4.3GradeController

package com.aaa.ssm.controller;
import com.aaa.ssm.result.AjaxResult;
import com.aaa.ssm.service.GradeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @Author Grg* @Date 2023/9/18 17:49* @PackageName:com.aaa.ssm.controller* @ClassName: StudentController* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/@RestController
@RequestMapping("grade")
public class GradeController {@Autowiredprivate GradeService gradeService;@RequestMapping("list")public AjaxResult queryStudent() {return gradeService.listAllGrade();}
}

5.mapper层

5.1EmpMapper

package com.aaa.ssm.mapper;
import com.aaa.ssm.pojo.dto.EmpDTO;
import com.aaa.ssm.pojo.dto.LoginDTO;
import org.apache.ibatis.annotations.Param;
/*** @Author Grg* @Date 2023/9/17 15:02* @PackageName:com.aaa.ssm.mapper* @ClassName: EmpMapper* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface EmpMapper {LoginDTO login(@Param("username")String username,@Param("password") String password);EmpDTO getEmpInfoByEid(Integer eid);
}

5.2GradeMapper

package com.aaa.ssm.mapper;
import com.aaa.ssm.pojo.dto.GradeDTO;
import java.util.List;
/*** @Author Grg* @Date 2023/9/19 15:02* @PackageName:com.aaa.ssm.mapper* @ClassName: GradeMapper* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface GradeMapper {List<GradeDTO> listAllGrades();
}

5.3PermissionMapper

package com.aaa.ssm.mapper;
import com.aaa.ssm.pojo.dto.PermissionDTO;
import java.util.List;
/*** @Author Grg* @Date 2023/9/18 15:13* @PackageName:com.aaa.ssm.mapper* @ClassName: PermissionMapper* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface PermissionMapper {List<PermissionDTO> listSuperAdminPermissions();List<PermissionDTO> listNormalAdminPermissions(Integer rid);
}

5.4StudentMapper

package com.aaa.ssm.mapper;
import com.aaa.ssm.pojo.dto.StudentDTO;
import com.aaa.ssm.pojo.vo.StudentQuery;
import com.aaa.ssm.pojo.vo.StudentVO;
import java.util.List;
/*** @Author Grg* @Date 2023/9/18 17:55* @PackageName:com.aaa.ssm.mapper* @ClassName: StudentMapper* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface StudentMapper {List<StudentDTO> queryStudentByQuery(StudentQuery query);Long queryStudentTotalCount(StudentQuery query);int deleteStudentById(Integer id);int addStudent(StudentVO studentVO);StudentVO getStudentById(Integer id);int uptateStudent(StudentVO studentVO);
}

6.pojo

6.1dto

6.1.1DeptDTO

package com.aaa.ssm.pojo.dto;
import lombok.Data;
import java.io.Serializable;
/*** @Author Grg* @Date 2023/9/17 15:22* @PackageName:com.aaa.ssm.pojo.dto* @ClassName: DeptDTO* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Data
public class DeptDTO implements Serializable {private Integer id;private String dname;private String other;private Integer state;
}

6.1.2EmpDTO

package com.aaa.ssm.pojo.dto;
import lombok.Data;
import java.io.Serializable;/*** @Author Grg* @Date 2023/9/17 15:20* @PackageName:com.aaa.ssm.pojo.dto* @ClassName: EmpDTO* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Data
public class EmpDTO implements Serializable {private Integer id;private String ename;private String hiredate;private String telephone;private DeptDTO dept;private RoleDTO role;
}

6.2vo

6.2.1StudentVO

package com.aaa.ssm.pojo.vo;
import lombok.Data;
import java.io.Serializable;
/*** @Author Grg* @Date 2023/9/19 15:45* @PackageName:com.aaa.ssm.pojo.vo* @ClassName: StudentVO* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Data
public class StudentVO implements Serializable {private Integer id;private String sname;private Integer sage;private String saddress;private Integer gid;
}

当然不止这些,还有好几个(懒得写了,实在头皮发麻)这些类主要就是用来接收参数用的

这一块需要注意的是,我们的数据库中其实是有外键的,虽然是逻辑外键。我们在新建类中可以看到,在类中有私有的成员对象,我们使用这种方法来凸显外键的作用

剩下的在这里就放张截图叭

在这里插入图片描述

7.result

用来接收AJAX请求返回结果

AjaxResult

package com.aaa.ssm.result;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @Author Grg* @Date 2023/8/28 15:58* @PackageName:com.grg.Result* @ClassName: AjaxResult* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AjaxResult {private Integer code;private String msg;private Object data;public static AjaxResult success() {return new AjaxResult(1,"操作成功",null);}public static AjaxResult success(Object data) {return new AjaxResult(1,"操作成功",data);}public static AjaxResult error() {return new AjaxResult(2,"操作失败",null);}public static AjaxResult error(String msg) {return new AjaxResult(2,msg,null);}}

8.service

8.1impl实现类

8.1.1EmpServiceImpl

package com.aaa.ssm.service.impl;import com.aaa.ssm.mapper.EmpMapper;
import com.aaa.ssm.mapper.PermissionMapper;
import com.aaa.ssm.pojo.dto.EmpDTO;
import com.aaa.ssm.pojo.dto.LoginDTO;
import com.aaa.ssm.pojo.dto.PermissionDTO;
import com.aaa.ssm.result.AjaxResult;
import com.aaa.ssm.service.EmpService;
import com.aaa.ssm.sysconst.DeptState;
import com.aaa.ssm.sysconst.EmpState;
import com.aaa.ssm.util.PermissionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;/*** @Author Grg* @Date 2023/9/17 15:00* @PackageName:com.aaa.ssm.service.impl* @ClassName: EmpServiceImpl* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Autowiredprivate PermissionMapper permissionMapper;@Autowiredprivate HttpSession session;@Overridepublic AjaxResult login(String username, String password) {//1.验证账号密码是否正确LoginDTO login = empMapper.login(username, password);//1.5账号的状态是什么 state 0在职  1冻结  2离职if (login == null) {return AjaxResult.error("账号或者密码错误");}if (login.getState() == EmpState.EMP_DONGJIE) {return AjaxResult.error("账号被冻结");}if (login.getState() == EmpState.EMP_LIZHI) {return AjaxResult.error("员工已经离职 联系管理员");}//2.如果正确 获取员工编号 查询员工信息Integer eid = login.getEid();EmpDTO empInfo = empMapper.getEmpInfoByEid(eid);if (empInfo.getDept().getState() == DeptState.DEPT_STATE_BILE) {return AjaxResult.error("部门已倒闭 请联系主管");}//登录成功//将当前用户信息存储近Session中session.setAttribute("emp", empInfo);return AjaxResult.success();}@Overridepublic AjaxResult getInfo() {EmpDTO empInfo = (EmpDTO) session.getAttribute("emp");HashMap<Object, Object> map = new HashMap<>();map.put("userInfo", empInfo);Integer state = empInfo.getRole().getState();if (state == 1) {return AjaxResult.success(map);}List<PermissionDTO> permissionDTOS = null;Integer rid = empInfo.getRole().getId();if (rid == 1) {//超级管理员权限permissionDTOS = permissionMapper.listSuperAdminPermissions();} else {//普通管理员permissionDTOS = permissionMapper.listNormalAdminPermissions(rid);}List<PermissionDTO> data = PermissionUtil.handlerData(permissionDTOS);map.put("permissionInfo", data);return AjaxResult.success(map);}
}

8.1.2GradeServiceImpl

package com.aaa.ssm.service.impl;import com.aaa.ssm.mapper.GradeMapper;
import com.aaa.ssm.pojo.dto.GradeDTO;
import com.aaa.ssm.result.AjaxResult;
import com.aaa.ssm.service.GradeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;/*** @Author Grg* @Date 2023/9/19 15:00* @PackageName:com.aaa.ssm.service.impl* @ClassName: GradeServiceImpl* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Service
public class GradeServiceImpl implements GradeService {@Autowiredprivate GradeMapper gradeMapper;@Overridepublic AjaxResult listAllGrade() {List<GradeDTO> gradeDTOS = gradeMapper.listAllGrades();return AjaxResult.success(gradeDTOS);}
}

8.1.3StudentServiceImpl

package com.aaa.ssm.service.impl;import com.aaa.ssm.mapper.StudentMapper;
import com.aaa.ssm.pojo.dto.StudentDTO;
import com.aaa.ssm.pojo.vo.StudentQuery;
import com.aaa.ssm.pojo.vo.StudentVO;
import com.aaa.ssm.result.AjaxResult;
import com.aaa.ssm.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.List;/*** @Author Grg* @Date 2023/9/18 17:53* @PackageName:com.aaa.ssm.service.impl* @ClassName: StudentImpl* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
@Service
public class StudentServiceImpl implements StudentService {@Autowiredprivate StudentMapper studentMapper;@Overridepublic AjaxResult queryStudent(StudentQuery query) {List<StudentDTO> studentDTOS = studentMapper.queryStudentByQuery(query);Long totalCount = studentMapper.queryStudentTotalCount(query);HashMap<Object, Object> map = new HashMap<>();map.put("currentData", studentDTOS);map.put("totalCount", totalCount);return AjaxResult.success(map);}@Overridepublic AjaxResult deleteStudent(Integer id) {int i = studentMapper.deleteStudentById(id);if (i > 0) {return AjaxResult.success();} else {return AjaxResult.error("删除失败");}}@Overridepublic AjaxResult addStudent(StudentVO studentVO) {System.out.println(studentVO);int i = studentMapper.addStudent(studentVO);if (i > 0) {return AjaxResult.success();} else {return AjaxResult.error("添加失败");}}@Overridepublic AjaxResult getStudentById(Integer id) {StudentVO student = studentMapper.getStudentById(id);return AjaxResult.success(student);}@Overridepublic AjaxResult updateStudent(StudentVO studentVO) {int i = studentMapper.uptateStudent(studentVO);if (i > 0) {return AjaxResult.success();} else {return AjaxResult.error("修改失败");}}
}

8.2EmpService

package com.aaa.ssm.service;import com.aaa.ssm.result.AjaxResult;/*** @Author Grg* @Date 2023/9/17 14:58* @PackageName:com.aaa.ssm.service* @ClassName: EmpService* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface EmpService {AjaxResult login(String username, String password);AjaxResult getInfo();
}

8.3GradeService

package com.aaa.ssm.service;import com.aaa.ssm.result.AjaxResult;/*** @Author Grg* @Date 2023/9/19 14:59* @PackageName:com.aaa.ssm.service* @ClassName: GradeService* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface GradeService {AjaxResult listAllGrade();
}

8.4StudentService

package com.aaa.ssm.service;import com.aaa.ssm.pojo.vo.StudentQuery;
import com.aaa.ssm.pojo.vo.StudentVO;
import com.aaa.ssm.result.AjaxResult;/*** @Author Grg* @Date 2023/9/18 17:52* @PackageName:com.aaa.ssm.service* @ClassName: StudentService* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public interface StudentService {AjaxResult queryStudent(StudentQuery query);AjaxResult deleteStudent(Integer id);AjaxResult addStudent(StudentVO studentVO);AjaxResult getStudentById(Integer id);AjaxResult updateStudent(StudentVO studentVO);
}

9.util工具类

9.1PermissionUtil

这个是在登陆时,根据登录账号的权限不同 展示的数据和能进行的操作也不一样

package com.aaa.ssm.util;import com.aaa.ssm.pojo.dto.PermissionDTO;import java.util.ArrayList;
import java.util.List;/*** @Author Grg* @Date 2023/9/18 15:58* @PackageName:com.aaa.ssm.util* @ClassName: PermissionUtil* @Description: 又是码代码的一天* @Version plus max 宇宙无敌终极版本*/
public class PermissionUtil {public static List<PermissionDTO> handlerData(List<PermissionDTO> permissionDTOS){ArrayList<PermissionDTO> data = new ArrayList<>();for (PermissionDTO permissionDTO : permissionDTOS) {if (permissionDTO.getPid() == 0) {data.add(permissionDTO);}}for (PermissionDTO permissionDTO : permissionDTOS) {Integer pid = permissionDTO.getPid();for (PermissionDTO datum : data) {if (datum.getId().equals(pid)) {datum.getSubMenu().add(permissionDTO);}}}return data;}
}

10.mapper.xml

10.1EmpMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.aaa.ssm.mapper.EmpMapper"><select id="login" resultType="com.aaa.ssm.pojo.dto.LoginDTO">select * from t_emp_login where username = #{username} and password = #{password};</select><resultMap id="empInfo" type="empDTO"><id column="id" property="id"></id><result column="ename" property="ename"></result><result column="hiredate" property="hiredate"></result><result column="telephone" property="telephone"></result><association property="dept" javaType="deptDTO"><id column="did" property="id"></id><result column="dname" property="dname"></result><result column="dstate" property="state"></result></association><association property="role" javaType="roleDTO"><id column="rid" property="id"></id><result column="rname" property="rname"></result><result column="rstate" property="state"></result></association></resultMap><select id="getEmpInfoByEid" resultMap="empInfo">SELECT e.id,e.ename,e.hiredate,e.telephone,d.id    did,d.dname,d.other,d.state dstate,r.id    rid,r.rname,r.state rstatefrom t_emp_info eLEFT JOIN t_dept d on e.did = d.idLEFT JOIN t_role r on e.rid = r.idwhere e.id = #{eid};</select>
</mapper>

10.2GradeMapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.aaa.ssm.mapper.GradeMapper"><select id="listAllGrades" resultType="com.aaa.ssm.pojo.dto.GradeDTO">select *from t_gradewhere state = 0;</select>
</mapper>

10.3PermissionMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.aaa.ssm.mapper.PermissionMapper"><select id="listSuperAdminPermissions" resultType="com.aaa.ssm.pojo.dto.PermissionDTO">select id, pid, type, pname title, url content, state, iconfrom t_perm</select><select id="listNormalAdminPermissions" resultType="com.aaa.ssm.pojo.dto.PermissionDTO">select p.id, p.pid, p.type, p.pname title, p.url content, p.state, p.iconfrom t_rp tpleft join t_perm p on tp.pid = p.idwhere tp.rid = #{rid}and p.state = 0</select>
</mapper>

10.4StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.aaa.ssm.mapper.StudentMapper"><resultMap id="StudentMap" type="com.aaa.ssm.pojo.dto.StudentDTO"><id column="id" property="id"></id><result column="name" property="name"></result><result column="age" property="age"></result><result column="address" property="address"></result><result column="headImg" property="headImg"></result><association property="grade" javaType="com.aaa.ssm.pojo.dto.GradeDTO"><id column="tid" property="id"></id><result column="gname" property="gname"></result><result column="state" property="state"></result></association></resultMap><sql id="queryStu"><where><if test="name != null and '' != name">and ts.name like concat('%',#{name},'%')</if><if test="minAge != null and '' != minAge">and ts.age &gt; #{minAge}</if><if test="maxAge != null and '' != maxAge">and ts.age &lt; #{maxAge}</if></where></sql><insert id="addStudent">insert into t_student ( name, age, address, gid) values (#{sname},#{sage},#{saddress},#{gid})</insert><update id="uptateStudent">update t_studentSET name    = #{sname},age     = #{sage},address = #{saddress},gid= #{gid}where id = #{id}</update><delete id="deleteStudentById">deletefrom t_studentwhere id = #{id}</delete><select id="queryStudentByQuery" resultMap="StudentMap">select ts.id,ts.name,ts.age,ts.address,ts.headImg,tg.id tid,tg.gname,tg.statefrom t_student tsleft join t_grade tgon ts.gid = tg.id<include refid="queryStu"></include>limit #{index},#{pageCount}</select><select id="queryStudentTotalCount" resultType="java.lang.Long">select count(*) from t_student ts<include refid="queryStu"></include></select><select id="getStudentById" resultType="com.aaa.ssm.pojo.vo.StudentVO">select id, name sname, age sage, address saddress, gidfrom t_studentwhere id = #{id}</select>
</mapper>
http://www.yayakq.cn/news/943823/

相关文章:

  • 网站建设与维护实训总结seo顾问服
  • 洮南网站建设深圳品牌策划机构
  • 九江商城网站建设邢台做网站哪家便宜
  • 沈阳企业网站开发乐拾seo
  • wordpress 编码免费手机优化大师下载安装
  • 网站建设书模板wordpress网址域名
  • 微网站制作平台哪个好网页小游戏怎么玩
  • 免费网站建设阿里云wordpress超级密码
  • 中小企业建站系统网站地图做计划任务
  • 成都市建设二维码检测网站无锡网站建设方案优化
  • 运城网站开发装修室内设计培训学校
  • 做网站是用wordpress还是DWwordpress 评论回复
  • 廊坊网站建设推广济南网站建设选聚搜网络
  • 网站建设工作基本流程如何在自己的电脑上做网站
  • 纪检网站建设计划书网站建设通俗讲
  • 海安网站开发网站改备案信息
  • 网站流量统计表格做网站端口无法清除
  • 企业网站备案域名信息做字体的网站
  • 公司做网站留言板wordpress用户链接
  • 成品网站代理开网店怎么和快递合作便宜
  • 网站未建设的情况说明网络服务提供者应当将该声明转送发出通知的权利人
  • 有没有做网站的公司网页游戏魔域永恒魔石
  • 建设校园网站的背景及意义建设银行宁波招聘网站
  • php网站开发工程成品免费观看网站
  • 电子商务网站建设与原理如何做衣服销售网站
  • 网站建设规划设计报告商城小程序模板
  • 网站添加子域名惠州网站建设找哪个公司
  • 无锡网站建设服务乐清最新招聘信息网
  • 禹城做网站主页面设计
  • 海南网站制作浦口国家建设部网站