热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

树的增删改模块

1.Controller:packagecom.cars.ict.rbpsems.controller;importcom.cars.ict.rbpsems.entity.TbBa

1.Controller:

package com.cars.ict.rbpsems.controller;

import com.cars.ict.rbpsems.entity.TbBasetree;
import com.cars.ict.rbpsems.service.TbBasetreeService;
import com.cars.ict.rbpsems.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
*


* 前端控制器
*


*
* @author testjava
* @since 2022-01-09
*/
@RestController
@RequestMapping("/tree")
public class TbBasetreeController {
// @Resource
@Autowired
private TbBasetreeService tbBasetreeService;


//查询树
@PostMapping("/list")
public List list() {
List persOnList= tbBasetreeService.getPersonList();
return personList;
}
//查询树2(只展示baseTree表里tree_state字段的值为1的数据)
@PostMapping("/listState")
public List listState() {
List persOnList= tbBasetreeService.getTreeState();
return personList;
}
//新增树
@PostMapping("/save")
public Result save(@RequestBody TbBasetree tbBasetree) {
boolean save = tbBasetreeService.save(tbBasetree);
if (save) {
return Result.ok();
}else {
return Result.error();
}
}
//修改树
@PostMapping("/edit")
public Result edit(@RequestBody TbBasetree tbBasetree) {
boolean update = tbBasetreeService.update(tbBasetree);
if (update) {
return Result.ok();
}else {
return Result.error();
}
}
//删除树
@PostMapping("/delete")
public Result delete(@RequestParam String id) {
boolean delete = tbBasetreeService.delete(id);
if (delete) {
return Result.ok();
}else {
return Result.error();
}
}
}
===============================================================================================================
2.Service:

package com.cars.ict.rbpsems.service;


import com.cars.ict.rbpsems.entity.TbBasetree;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
*


* 服务类
*


*
* @author testjava
* @since 2022-01-09
*/
public interface TbBasetreeService extends IService {
//查询树
List getPersonList();

//查询树2(只展示baseTree表里tree_state字段的值为1的数据)
List getTreeState();

//新增树
boolean save(TbBasetree tbBasetree);

//修改树
boolean update(TbBasetree tbBasetree);

//删除树
boolean delete(String id);
}

===============================================================================================================
3.ServiceImpl:
package com.cars.ict.rbpsems.service.impl;

import com.cars.ict.rbpsems.entity.TbBasetree;
import com.cars.ict.rbpsems.mapper.TbBasetreeMapper;
import com.cars.ict.rbpsems.service.TbBasetreeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

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

/**
*


* 服务实现类
*


*
* @author testjava
* @since 2022-01-09
*/
@Service
public class TbBasetreeServiceImpl extends ServiceImpl, TbBasetree> implements TbBasetreeService {
@Resource
private TbBasetreeMapper tbBasetreeMapper;

//查询树
@Override
public List getPersonList() {
//查询所有的数据
List allList = tbBasetreeMapper.getPersonList();
//创建一个list集合,用于存放根节点
List parent = new ArrayList<>();
for (TbBasetree person : allList) {
//如果parentId0,则代表是根节点,存入到集合中 person.setSpread(true); 自动展开
if (person.getParentId().equals("0")) {
//虚拟字段spreadtrue时表示默认展开
person.setSpread("true");
//虚拟字段checkedtrue时表示默认选中
person.setChecked("true");
parent.add(person);
}
}
//查找根节点下的子类,因为根节点的id就是子节点的parentId;
for (TbBasetree person : parent) {
List children = getChild(person.getId(), allList);
person.setChildren(children);
}
return parent;
}
//查找子节点的方法
private List getChild(String id, List allList) {
//存放子节点的集合
List children = new ArrayList<>();
for (TbBasetree person : allList) {
//如果根节点的id等于集合内parentId,说明是根节点的子节点
if (person.getParentId().equals(id)) {
//存入子节点集合
//虚拟字段checkedtrue时表示默认选中
person.setChecked("true");
children.add(person);
}
}
for (TbBasetree person : children) {
//递归调用,如果子节点存在根节点,则再次调用,往后依次推
List persOnChildren= getChild(person.getId(), allList);
person.setChildren(personChildren);
}
//递归结束条件,如果子节点不存在子节点,则递归结束
// if (children == null) {
// return null;
// }
return children;
}
//新增树
@Override
public boolean save(TbBasetree tbBasetree) {
return tbBasetreeMapper.save(tbBasetree);
}
//修改树
@Override
public boolean update(TbBasetree tbBasetree) {
return tbBasetreeMapper.update(tbBasetree);
}
//删除树
@Override
public boolean delete(String id) {
//首先查出当前节点是否存在子节点,如果存在,则遍历删除子节点
List persOnList= tbBasetreeMapper.findByParentId(id);
System.out.println(personList);
//递归查出所有的子节点,personListnull是递归结束条件,如果当前子节点还存在子节点,则再次执行当前方法,只到找到不存子节点的那项结束
if (personList != null && personList.size() > 0) {
for (TbBasetree person : personList) {
delete(person.getId());
}
}
return tbBasetreeMapper.delete(id);
}
//查询树2(只展示baseTree表里tree_state字段的值为1的数据)
@Override
public List getTreeState() {
//查询所有的数据
List allList = tbBasetreeMapper.getTreeState();
//创建一个list集合,用于存放根节点
List parent = new ArrayList<>();
for (TbBasetree person : allList) {
//如果parentId0,则代表是根节点,存入到集合中 person.setSpread(true); 自动展开
if (person.getParentId().equals("0")) {
//虚拟字段spreadtrue时表示默认展开
person.setSpread("true");
//虚拟字段checkedtrue时表示默认选中
person.setChecked("true");
parent.add(person);
}
}
//查找根节点下的子类,因为根节点的id就是子节点的parentId;
for (TbBasetree person : parent) {
List children = getChild2(person.getId(), allList);
person.setChildren(children);
}
return parent;
}
//查找子节点的方法
private List getChild2(String id, List allList) {
//存放子节点的集合
List children = new ArrayList<>();
for (TbBasetree person : allList) {
//如果根节点的id等于集合内parentId,说明是根节点的子节点
if (person.getParentId().equals(id)) {
//存入子节点集合
//虚拟字段checkedtrue时表示默认选中
person.setChecked("true");
children.add(person);
}
}
for (TbBasetree person : children) {
//递归调用,如果子节点存在根节点,则再次调用,往后依次推
List persOnChildren= getChild2(person.getId(), allList);
person.setChildren(personChildren);
}
return children;
}
}

===============================================================================================================
4.Mapper接口:

package com.cars.ict.rbpsems.mapper;

import com.cars.ict.rbpsems.entity.TbBasetree;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.List;

/**
*


* Mapper 接口
*


*
* @author testjava
* @since 2022-01-09
*/
public interface TbBasetreeMapper extends BaseMapper {
List getPersonList();

boolean save(TbBasetree tbBasetree);

boolean update(TbBasetree tbBasetree);

boolean delete(String id);

TbBasetree findById(Integer id);

List findByParentId(String parentId);

List getTreeState();

}

===============================================================================================================
5.Mapper.xml:
xml version="1.0" encoding="UTF-8"?>
mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
namespace="com.cars.ict.rbpsems.mapper.TbBasetreeMapper">



id="save">
insert into tb_basetree (id, parent_id, title, field, info_mark, info_value, info_type, tree_state, create_time, update_time)
values (#{id}, #{parentId}, #{title}, #{field}, #{infoMark}, #{infoValue}, #{infoType}, #{treeState}, #{createTime}, #{updateTime})


id="update">
update tb_basetree set title=#{title}, field=#{field}, info_mark=#{infoMark}, info_value=#{infoValue}, info_type=#{infoType},
tree_state=#{treeState}, create_time=#{createTime}, update_time=#{updateTime}
where id = #{id}


id="delete">
delete from tb_basetree where id = #{id}














===============================================================================================================
6.entity:

package com.cars.ict.rbpsems.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
*


*
*


*
* @author testjava
* @since 2022-01-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="TbBasetree对象", description="")
public class TbBasetree implements Serializable {
private static final long serialVersiOnUID= 1L;

@TableId(value = "id", type = IdType.ID_WORKER)
private String id;

@ApiModelProperty(value = "id")
private String parentId;

@ApiModelProperty(value = "单位名称")
// @TableField("inf_name")
private String title;

@ApiModelProperty(value = "单位编码")
// @TableField("info_code")
private String field;

@ApiModelProperty(value = "标识")
private String infoMark;

@ApiModelProperty(value = "")
private Integer infoValue;

@ApiModelProperty(value = "类型(1国铁集团,2路局,3车务段,4中心站,5代管站)")
private Integer infoType;

@ApiModelProperty(value = "状态")
private Integer treeState;

@ApiModelProperty(value = "创建时间")
@Temporal(TemporalType.TIMESTAMP)
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezOne= "GMT+8")
private Date createTime;

@ApiModelProperty(value = "修改时间")
@Temporal(TemporalType.TIMESTAMP)
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezOne= "GMT+8")
private Date updateTime;

private List children;

@ApiModelProperty(value = "true时是默认展开")
@Transient
private String spread;

@ApiModelProperty(value = "true时是默认选中")
@Transient
private String checked;

}



 

推荐阅读
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了包的基础知识,包是一种模块,本质上是一个文件夹,与普通文件夹的区别在于包含一个init文件。包的作用是从文件夹级别组织代码,提高代码的维护性。当代码抽取到模块中后,如果模块较多,结构仍然混乱,可以使用包来组织代码。创建包的方法是右键新建Python包,使用方式与模块一样,使用import来导入包。init文件的使用是将文件夹变成一个模块的方法,通过执行init文件来导入包。一个包中通常包含多个模块。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 数组的排序:数组本身有Arrays类中的sort()方法,这里写几种常见的排序方法。(1)冒泡排序法publicstaticvoidmain(String[]args ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
author-avatar
漂浪男孩2010_218
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有