前言
我们先来写基础信息管理中的楼宇管理
后面的直接在Gitee上更新代码
https://gitee.com/yx5411648
功能实现
首先从dao写起
BuildingMapper.java
package com.yx.dao;
import com.yx.pojo.Building;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yx
* @since 2021-04-09
*/
@Component("buildingDao")
public interface BuildingMapper extends BaseMapper<Building> {
/**
* 查询所有记录信息
* @param numbers
* @return
*/
List<Building> queryBuildAll(@Param("numbers")String numbers);
}
其实现BuildingMapper.xml
<?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.yx.dao.BuildingMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yx.pojo.Building">
<id column="id" property="id"/>
<result column="numbers" property="numbers"/>
<result column="uints" property="uints"/>
<result column="remarks" property="remarks"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, numbers, uints, remarks
</sql>
<select id="queryBuildAll" parameterType="String" resultType="com.yx.pojo.Building">
select * from building
<where>
<if test="numbers!=null and numbers!=''">
and numbers like '%${numbers}%'
</if>
</where>
order by id desc
</select>
</mapper>
BudilingSerivce,BuildingServiceImpl
BuildingController.java
package com.yx.controller;
import com.github.pagehelper.PageInfo;
import com.yx.util.JsonObject;
import com.yx.util.R;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;
import com.yx.service.IBuildingService;
import com.yx.pojo.Building;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author yx
* @since 2021-04-09
*/
@Api(tags = {""})
@RestController
@RequestMapping("/building")
public class BuildingController {
private Logger log = LoggerFactory.getLogger(getClass());
@Resource
private IBuildingService buildingService;
/**
* 查询所有楼宇记录
*/
@RequestMapping("/queryBuildAll")
public JsonObject queryBuildAll(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "15") Integer limit,
String numbers){
JsonObject jsonObject = new JsonObject();
PageInfo<Building> buildingPageInfo = buildingService.queryBuildAll(pageNum, limit, numbers);
jsonObject.setCode(0);
jsonObject.setMsg("ok");
jsonObject.setCount(buildingPageInfo.getTotal());
jsonObject.setData(buildingPageInfo.getList());
return jsonObject;
}
/**
* 下拉框,查询所有楼宇信息
* @return
*/
@RequestMapping("/queryBuild")
public List<Building> queryBuild(){
PageInfo<Building> pageInfo = buildingService.queryBuildAll(1, 100, null);
return pageInfo.getList();
}
@ApiOperation(value = "新增")
@PostMapping("/add")
public R add(@RequestBody Building building){
int num = buildingService.add(building);
if (num > 0){
return R.ok();
}else{
return R.fail("添加失败");
}
}
@ApiOperation(value = "删除")
@RequestMapping("/deleteByIds")
public R delete(String ids){
List<String> list = Arrays.asList(ids.split(","));
for (String id : list) {
buildingService.delete(Long.parseLong(id));//这里必须接收long类型,所以转成long
}
return R.ok();
}
@ApiOperation(value = "更新")
@RequestMapping("/update")
public R update(@RequestBody Building building){
int num = buildingService.updateData(building);
if (num > 0){
return R.ok();
}else{
return R.fail("修改失败");
}
}
@ApiOperation(value = "查询分页数据")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "页码"),
@ApiImplicitParam(name = "pageCount", value = "每页条数")
})
@GetMapping()
public IPage<Building> findListByPage(@RequestParam Integer page,
@RequestParam Integer pageCount){
return buildingService.findListByPage(page, pageCount);
}
@ApiOperation(value = "id查询")
@GetMapping("{id}")
public Building findById(@PathVariable Long id){
return buildingService.findById(id);
}
}
先是首页
BuildIndex.html
<div class="layuimini-container layuimini-page-anim">
<div class="layuimini-main">
<div class="demoTable">
楼号:
<div class="layui-inline">
<input class="layui-input" name="numbers" id="numbers" autocomplete="off">
</div>
<button class="layui-btn" data-type="reload">搜索</button>
</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="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
</script>
</div>
</div>
<script>
layui.use(['form', 'table','miniPage','element'], function () {
var $ = layui.jquery,
form = layui.form,
table = layui.table,
miniPage = layui.miniPage;
table.render({
elem: '#currentTableId',
url: 'building/queryBuildAll',
toolbar: '#toolbarDemo',
defaultToolbar: ['filter', 'exports', 'print', {
title: '提示',
layEvent: 'LAYTABLE_TIPS',
icon: 'layui-icon-tips'
}],
cols: [[
{type: "checkbox", width: 50},
//{field: 'id', width: 80, title: 'ID', sort: true},
{field: 'numbers', width: 80, title: '楼号'},
{field: 'uints', width: 80, title: '单元'},
{field: 'remarks', width: 80, title: '备注'},
{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 numbers = $('#numbers');
//执行重载
table.reload('testReload', {
page: {
curr: 1 //重新从第 1 页开始
}
,where: {
numbers:numbers.val()
}
}, 'data');
}
};
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
var result = JSON.stringify(data.field);
layer.alert(result, {
title: '最终的搜索信息'
});
//执行搜索重载
table.reload('currentTableId', {
page: {
curr: 1
}
, where: {
searchParams: result
}
}, 'data');
return false;
});
/**
* toolbar事件监听
*/
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { // 监听添加操作
var content = miniPage.getHrefContent('page/base/build/addBuild.html');
var index=openPage(content,"添加楼宇",'60%','60%');//title,width,height
$(window).on("resize", function () {
layer.full(index);//显示
});
} else if (obj.event === 'delete') { // 监听删除操作
/*
1、判断是否有选择记录 如果没有提示
2、获取要删除的id集合
3、发送请求 实现删除功能
4、提示成功 并刷新主页
*/
var checkStatus=table.checkStatus(obj.config.id);
var data =checkStatus.data;
if(data.length==0){
layer.msg("请选择要删除的记录信息");
}else{
//获取要删除id的集合
var ids =getCheckId(data);
layer.confirm('你确定要删除吗?',function (index) {
//执行删除功能
deleteByIds($,"building/deleteByIds",ids,index);
})
}
}
});
//监听表格复选框选择
table.on('checkbox(currentTableFilter)', function (obj) {
console.log(obj)
});
/**
* 设计渲染form中的信息值,也就是点编辑后出现页面的文本框
* 以前是用jsp中jstl实现,现在直接用js实现,文本框中会出现渲染后的信息
*/
function setFormValues(data){
form.val("updateSubmit",{
id:data.id,
"numbers":data.numbers,
"uints":data.uints,
"remarks":data.remarks
});
};
table.on('tool(currentTableFilter)', function (obj) {
var data = obj.data;
if (obj.event === 'edit') {
var content = miniPage.getHrefContent('page/base/build/editBuild.html');
var index=openPage(content,"编辑楼宇",'60%','60%');
//渲染数据
setFormValues(data);
$(window).on("resize", function () {
layer.full(index);//转圈圈UI效果,意思是全屏使用index
});
return false;
} else if (obj.event === 'delete') {
layer.confirm('确定是否删除', function (index) {
deleteByIds($,"building/deleteByIds",data.id,index)
});
}
});
});
</script>
addBuild.html 添加
<div class="layuimini-main">
<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="numbers" lay-verify="required" lay-reqtext="楼栋号不能为空" placeholder="请输入楼栋号,如16栋" value="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">所属单元</label>
<div class="layui-input-block">
<select name="uints" lay-verify="required">
<option value="">请选择单元</option>
<option value="1单元">1单元</option>
<option value="2单元">2单元</option>
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">备注信息</label>
<div class="layui-input-block">
<textarea name="remarks" class="layui-textarea" placeholder="请输入备注信息,没有填无"></textarea>
</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>
</div>
<script>
layui.use(['form', 'table'], function () {
var form = layui.form,
layer = layui.layer,
table = layui.table,
$ = layui.$;
/**
* 初始化表单,要加上,不然刷新部分组件可能会不加载
*/
form.render();
// 当前弹出层,防止ID被覆盖
var parentIndex = layer.index;
//监听提交
form.on('submit(saveBtn)', function (data) {
//获取表单中的数据信息
var datas=data.field;
addOrUpdateSubmit($,"building/add",datas);
return false;
});
});
</script>
editBuild.html 编辑(修改)
<div class="layuimini-main">
<div class="layui-form layuimini-form " lay-filter="updateSubmit">
<input type="hidden" name="id">
<div class="layui-form-item">
<label class="layui-form-label required">楼栋号</label>
<div class="layui-input-block">
<input type="text" name="numbers" lay-verify="required" lay-reqtext="楼宇编号不能为空" 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 name="uints" lay-verify="required">
<option value="">请选择单元</option>
<option value="1单元">1单元</option>
<option value="2单元">2单元</option>
</select>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">备注信息</label>
<div class="layui-input-block">
<textarea name="remarks" class="layui-textarea" placeholder="请输入备注信息"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="updateSubmit">确认修改</button>
</div>
</div>
</div>
</div>
<script>
layui.use(['form', 'table'], function () {
var form = layui.form,
layer = layui.layer,
table = layui.table,
$ = layui.$;
/**
* 初始化表单,要加上,不然刷新部分组件可能会不加载
*/
form.render();
// 当前弹出层,防止ID被覆盖
var parentIndex = layer.index;
//监听提交
form.on('submit(updateSubmit)', function (data) {
//获取表单中的数据信息,注意获取的是name,不是id
var datas=data.field;
//向后台发送请求 添加
addOrUpdateSubmit($,"building/update",datas);
return false;
});
});
</script>
后面直接git上更新吧,有兴趣可以关注一下
https://gitee.com/yx5411648