前言
同理,dao->service->controller+jsp,管理员管理如下
完整版本已开发完毕,并开源,见该篇文章
https://blog.csdn.net/weixin_39615182/article/details/115458248
功能实现
AdminMapper.java
package com.yx.dao;
import com.yx.entity.Admin;
import java.util.List;
public interface AdminMapper {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table admin
*
* @mbggenerated Wed Mar 24 09:37:56 CST 2021
*/
int deleteByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table admin
*
* @mbggenerated Wed Mar 24 09:37:56 CST 2021
*/
int insert(Admin record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table admin
*
* @mbggenerated Wed Mar 24 09:37:56 CST 2021
*/
int insertSelective(Admin record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table admin
*
* @mbggenerated Wed Mar 24 09:37:56 CST 2021
*/
Admin selectByPrimaryKey(Integer id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table admin
*
* @mbggenerated Wed Mar 24 09:37:56 CST 2021
*/
int updateByPrimaryKeySelective(Admin record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table admin
*
* @mbggenerated Wed Mar 24 09:37:56 CST 2021
*/
int updateByPrimaryKey(Admin record);
/**
* 管理员查询
*/
List<Admin> queryAdminInfoAll(Admin admin);
}
AdminService.java
package com.yx.service;
import com.github.pagehelper.PageInfo;
import com.yx.entity.Admin;
import java.util.List;
public interface AdminService {
/**
* 分页查询
*/
PageInfo<Admin> queryAdminInfoAll(Admin admin, int page , int limit);
//添加
int addAdminSubmit(Admin admin);
//修改
int updateAdminSubmit(Admin admin);
//删除
void deleteAdminByIds(List<String> ids);
//根据id查询详细信息
Admin queryAdminById(Integer id);
}
AdminServiceImpl.java
package com.yx.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yx.dao.AdminMapper;
import com.yx.entity.Admin;
import com.yx.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("adminService")
public class AdminServiceImpl implements AdminService {
@Autowired
private AdminMapper adminMapper;
@Override
public PageInfo<Admin> queryAdminInfoAll(Admin admin, int page, int limit) {
PageHelper.startPage(page,limit);
List<Admin> list=adminMapper.queryAdminInfoAll(admin);
PageInfo pageInfo=new PageInfo(list);
return pageInfo;
}
@Override
public int addAdminSubmit(Admin admin) {
return adminMapper.insert(admin);
}
@Override
public int updateAdminSubmit(Admin admin) {
return adminMapper.updateByPrimaryKey(admin);
}
@Override
public void deleteAdminByIds(List<String> ids) {
for(String id:ids){
adminMapper.deleteByPrimaryKey(Integer.valueOf(id));
}
}
@Override
public Admin queryAdminById(Integer id) {
return adminMapper.selectByPrimaryKey(id);
}
}
AdminController.java
package com.yx.controller;
import com.github.pagehelper.PageInfo;
import com.yx.entity.Admin;
import com.yx.service.AdminService;
import com.yx.util.DataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.xml.crypto.Data;
import java.util.Arrays;
import java.util.List;
@Controller
public class AdminController {
@Autowired
private AdminService adminService;
/**
* 查询管理员的首页
*/
@GetMapping("/adminIndex")
public String adminIndex(){
return "admin/adminIndex";
}
@GetMapping("/addAdmin")
public String addAdmin(){
return "admin/addAdmin";
}
/**
* 根据id查询管理员信息
*/
@GetMapping("/queryAdminById")
public String queryAdminById(Integer id, Model model){
model.addAttribute("id",id);
return "admin/updateAdmin";
}
/**
* 提交管理添加功能实现
*/
@ResponseBody
@RequestMapping("/addAdminSubmit")
public DataInfo addAdminSubmit(Admin admin){
int num=adminService.addAdminSubmit(admin);
if(num>0){
return DataInfo.ok();
}else{
return DataInfo.fail("添加失败");
}
}
/**
* 密码的修改
*/
@ResponseBody
@RequestMapping("/updatePwdSubmit")
public DataInfo updatePwdSubmit(Integer id,String oldPwd,String newPwd){
//根据id查询对象
Admin info=adminService.queryAdminById(id);
if(!oldPwd.equals(info.getPassword())){//输入的密码是否和原密码一致
return DataInfo.fail("输入的旧密码和原来不一致");
}else{
info.setPassword(newPwd);
return DataInfo.ok("修改密码成功");
}
}
/***
* 删除功能实现
*/
@ResponseBody
@RequestMapping("/deleteAdmin")
public DataInfo deleteAdmin(String ids){
List<String> list= Arrays.asList(ids.split(","));
adminService.deleteAdminByIds(list);
return DataInfo.ok();
}
/**
* 查询所有的管理员信息
*/
@ResponseBody
@RequestMapping("/adminAll")
public DataInfo adminAll(Admin admin,
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "15") int limit){
//查询所有的记录信息
PageInfo<Admin> pageInfo=adminService.queryAdminInfoAll(admin,page,limit);
return DataInfo.ok("成功",pageInfo.getTotal(),pageInfo.getList());
}
}
下面写jsp
addAdmin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<meta charset="utf-8">
<title>添加管理员</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="<%=basePath%>lib/layui-v2.5.5/css/layui.css" media="all">
<link rel="stylesheet" href="<%=basePath%>css/public.css" media="all">
<style>
body {
background-color: #ffffff;
}
</style>
</head>
<body>
<div class="layui-form layuimini-form">
<div class="layui-form-item">
<label class="layui-form-label required">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" lay-verify="required" lay-reqtext="用户名不能为空" placeholder="请输入用户名" value="" class="layui-input">
<tip>填写自己用户名。</tip>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">密码</label>
<div class="layui-input-block">
<input type="password" name="password" lay-verify="required" placeholder="请输入密码" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label required">管理员类型</label>
<div class="layui-input-block">
<select class="layui-input" name="type" id="type">
<option value=""></option>
<option value="0">普通管理员</option>
<option value="1">高级管理员</option>
</select>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
</div>
</div>
</div>
<script src="<%=basePath%>lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>
layui.use(['form'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.$;
//监听提交
form.on('submit(saveBtn)', function (data) {
var datas=data.field;//form单中的数据信息
//向后台发送数据提交添加
$.ajax({
url:"addAdminSubmit",
type:"POST",
data:datas,
success:function(result){
if(result.code==0){//如果成功
layer.msg('添加成功',{
icon:6,
time:500
},function(){
parent.window.location.reload();
var iframeIndex = parent.layer.getFrameIndex(window.name);
parent.layer.close(iframeIndex);
})
}else{
layer.msg(resut.msg);
}
}
})
return false;
});
});
</script>
</body>
</html>
adminIndex.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理员</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="<%=basePath%>lib/layui-v2.5.5/css/layui.css" media="all">
<link rel="stylesheet" href="<%=basePath%>css/public.css" media="all">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="demoTable">
<div class="layui-form-item layui-form">
用户名:
<div class="layui-inline">
<input class="layui-input" name="usernmae" id="username" autocomplete="off">
</div>
管理员类型:
<div class="layui-inline" >
<select class="layui-input" name="type" id="type">
<option value=""></option>
<option value="0">普通管理员</option>
<option value="1">高级管理员</option>
</select>
</div>
<button class="layui-btn" data-type="reload">搜索</button>
</div>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除 </button>
</div>
</script>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
<script type="text/html" id="currentTableBar">
<a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="updatePwd">修改密码</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
</script>
</div>
</div>
<script src="<%=basePath%>lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>
layui.use(['form', 'table'], function () {
var $ = layui.jquery,
form = layui.form,
table = layui.table;
table.render({
elem: '#currentTableId',
url: '<%=basePath%>adminAll',//查询类型数据
toolbar: '#toolbarDemo',
defaultToolbar: ['filter', 'exports', 'print', {
title: '提示',
layEvent: 'LAYTABLE_TIPS',
icon: 'layui-icon-tips'
}],
cols: [[
{type: "checkbox", width: 50},
{field: 'id', width: 100, title: 'ID', sort: true},
{field: 'username', width: 180, title: '用户名'},
{field: 'type', width: 280, title: '管理员类型',
templet:function(res){//类型
if(res.type=='0'){
return '<span class="layui-btn layui-btn-normal layui-btn-xs">普通管理员</span>'
} else{
return '<span class="layui-btn layui-btn-danger layui-btn-xs">高级管理员</span>'
}
}},
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
]],
limits: [10, 15, 20, 25, 50, 100],
limit: 15,
page: true,
skin: 'line',
id:'testReload'
});
var $ = layui.$, active = {
reload: function(){
var username = $('#username').val();
var type = $('#type').val();
//执行重载
table.reload('testReload', {
page: {
curr: 1 //重新从第 1 页开始
}
,where: {
username:username,
type:type
}
}, 'data');
}
};
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
/**
* tool操作栏监听事件
*/
table.on('tool(currentTableFilter)', function (obj) {
var data=obj.data;
if (obj.event === 'updatePwd') { // 监听添加操作
var index = layer.open({
title: '修改密码',
type: 2,
shade: 0.2,
maxmin:true,
shadeClose: true,
area: ['60%', '60%'],
content: '<%=basePath%>queryAdminById?id='+data.id,
});
$(window).on("resize", function () {
layer.full(index);
});
} else if (obj.event === 'delete') { // 监听删除操作
layer.confirm('确定是否删除', function (index) {
//调用删除功能
deleteInfoByIds(data.id,index);
layer.close(index);
});
}
});
//监听表格复选框选择
table.on('checkbox(currentTableFilter)', function (obj) {
console.log(obj)
});
/**
* 获取选中记录的id信息
*/
function getCheackId(data){
var arr=new Array();
for(var i=0;i<data.length;i++){
arr.push(data[i].id);
}
//拼接id
return arr.join(",");
};
/**
* 提交删除功能
*/
function deleteInfoByIds(ids ,index){
//向后台发送请求
$.ajax({
url: "deleteAdmin",
type: "POST",
data: {ids: ids},
success: function (result) {
if (result.code == 0) {//如果成功
layer.msg('删除成功', {
icon: 6,
time: 500
}, function () {
parent.window.location.reload();
var iframeIndex = parent.layer.getFrameIndex(window.name);
parent.layer.close(iframeIndex);
});
} else {
layer.msg("删除失败");
}
}
})
};
/**
* toolbar监听事件
*/
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { // 监听添加操作
var index = layer.open({
title: '添加管理员',
type: 2,
shade: 0.2,
maxmin:true,
shadeClose: true,
area: ['60%', '60%'],
content: '<%=basePath%>addAdmin',
});
$(window).on("resize", function () {
layer.full(index);
});
} else if (obj.event === 'delete') {
/*
1、提示内容,必须删除大于0条
2、获取要删除记录的id信息
3、提交删除功能 ajax
*/
//获取选中的记录信息
var checkStatus=table.checkStatus(obj.config.id);
var data=checkStatus.data;
if(data.length==0){//如果没有选中信息
layer.msg("请选择要删除的记录信息");
}else{
//获取记录信息的id集合
var ids=getCheackId(data);
layer.confirm('确定是否删除', function (index) {
//调用删除功能
deleteInfoByIds(ids,index);
layer.close(index);
});
}
}
});
});
</script>
</body>
</html>
updateAdmin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ page isELIgnored="false" %>
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<meta charset="utf-8">
<title>修改密码</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="<%=basePath%>lib/layui-v2.5.5/css/layui.css" media="all">
<link rel="stylesheet" href="<%=basePath%>css/public.css" media="all">
<style>
body {
background-color: #ffffff;
}
</style>
</head>
<body>
<div class="layui-form layuimini-form">
<input type="hidden" name="id" value="${id}">
<div class="layui-form-item">
<label class="layui-form-label required">原密码</label>
<div class="layui-input-block">
<input type="password" name="oldPwd" lay-verify="required" placeholder="请输入原密码" class="layui-input">
<tip>请输入原密码。</tip>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">请输入新密码</label>
<div class="layui-input-block">
<input type="password" name="newPwd" lay-verify="required" placeholder="请输入新密码" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">请再次输入新密码</label>
<div class="layui-input-block">
<input type="password" name="newPwd2" lay-verify="required" placeholder="请再次输入新密码" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">修改密码</button>
</div>
</div>
</div>
<script src="<%=basePath%>lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>
layui.use(['form'], function () {
var form = layui.form,
layer = layui.layer,
$ = layui.$;
//监听提交
form.on('submit(saveBtn)', function (data) {
var datas=data.field;//form单中的数据信息
if(datas.newPwd!=datas.newPwd2){
layer.msg("两次输入的新密码不一样...请重新输入")
}else{
//向后台发送数据提交添加
$.ajax({
url:"updatePwdSubmit",
type:"POST",
data: {
id:datas.id,
oldPwd:datas.oldPwd,
newPwd:datas.newPwd
},
success:function(result){
if(result.code==0){//如果成功
layer.msg(result.msg,{
icon:6,
time:500
},function(){
parent.window.location.reload();
var iframeIndex = parent.layer.getFrameIndex(window.name);
parent.layer.close(iframeIndex);
})
}else{
layer.msg(result.msg);
}
}
})
}
return false;
});
});
</script>
</body>
</html>
运行Tomcat测试
添加
查询
测试通过