java实现删除某条信息并刷新当前页操作

 更新时间:2020年11月16日 10:37:34   作者:我相信慢思考的力量  
这篇文章主要介绍了java实现删除某条信息并刷新当前页操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,大家还是直接看代码吧~

//执行的是删除信息的操作
 String a=request.getParameter("name");
 a = URLEncoder.encode(a, "ISO-8859-1");
 String name = URLDecoder.decode(a, "UTF-8");
 String num=request.getParameter("num");
 System.out.println("name:"+name+"num:"+num);
 String sql="delete from person_info where name=? and num=?";
 String sz[]={name,num};
 JdbcUtils.update(sql, sz);
 //刷新操作
 String sqls="select * from person_info";
 ResultSet rs=JdbcUtils.select(sqls, null);
 ArrayList<Person_info> list=new ArrayList<Person_info>();
 try {
 while(rs.next()){
 Person_info pi=new Person_info(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6));
 list.add(pi);
 }
 request.setAttribute("list", list);
 request.getRequestDispatcher("Personnel_definition.jsp").forward(request, response);
 } catch (SQLException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } 
 
 }

补充知识:关于分页时怎么实现当本页面最后一条记录被删除时,自动向上一个页面跳转的实现(java实现)

##问题详解

在做批量删除时,发现若批量删除整页时,会自动跳到第一页首页,而不是返回删除当前页的上一页,不符合产品要求且使界面交互不好,给用户带来糟糕体验。

##思路详解

在controller层传参时要考虑到不仅要传入需要删除的id集合,同时传入pageSize,pageNum以及总条数集合的查询条件(如:本示例会传入groupId(分组id)),在删除成功后初始化当前页,先根据查询条件查询出总条数数量,在pageSize不等于null或为0的情况下。算出余数[(pageSize*pageNum-count)%pageSize ].若余数为0,则当前页等于pageNum-1;若余数不为0,则当前页=pageNum.将结果当前页传给前台即可。

##后台代码实现

#controller层#

@Api(description = "分组下的学生",value = "分组下的学生")
@RestController
@RequestMapping("studentGroup")
public class StudentGroupController {
 @Autowired
 private RestStudentGroupService restStudentGroupService;

 @RequestMapping(value = "deleteGroupStudent",method = RequestMethod.POST)
 @ApiOperation(value = "删除分组中的学生",notes = "删除分组中的学生")
 public ResponseObj deleteGroupStudent(@RequestParam(value = "groupId",required = true)Long groupId,
   @RequestParam(value = "ids",required = true)String ids,
   @RequestParam(value = "pageSize",required = false)Integer pagesize,
   @RequestParam(value = "pageNum",required = false)Integer pageNum){

 return restStudentGroupService.deleteGroupStudent(groupId,ids,pagesize,pageNum);
 }
 }

#service层#

@FeignClient(value = ServiceName.VALUE)
public interface RestStudentGroupService {

 @RequestMapping(value = "/school/cloud/student/deleteGroupStudent",method = RequestMethod.POST)
 public ResponseObj deleteGroupStudent(@RequestParam(value = "groupId")Long groupId,
   @RequestParam(value = "ids")String ids,
   @RequestParam(value = "pageSize")Integer pagesize,
   @RequestParam(value = "pageNum")Integer pageNum);
   }

#serviceImpl层#

@Service
public class RestStudentGroupServiceImpl implements RestStudentGroupService {

 @Autowired
 private DubboStudentGroupService dubboStudentGroupService ;
 @Override
 public ResponseObj deleteGroupStudent(Long groupId,String ids,Integer pageSize,Integer pageNum) {

 List<Long> idList = TextUtils.split(ids);
 if(groupId == null || idList== null || idList.size() == 0){
 ResponseObj responseObj = ResponseObj.ERROR("参数错误");
 responseObj.setSuccess(true);
 return responseObj;
 }
 ServiceResult<Long> serviceResult = dubboStudentGroupService .deleteCorpGroup(idList, groupId);
 if(!serviceResult.getSuccess()){
 throw new RuntimeException("分组下学生查询失败");
 }
 //应前端要求加此dto,封装传给前台的当前页属性
 CurrenPageDto currenPageDto=new CurrenPageDto();
 //初始化当前页
 Integer currentPage = 1;
 //查出该分组id下的学生数量
 ServiceResult<Long> itemCountLongs = dubboStudentGroupService.getTotalCount(groupId);
 Long itemCountLong= itemCountLongs.getResult();
 Integer itemCount = itemCountLong!=null ? itemCountLong.intValue() : 0;
 //"查询到学生数量:{},pageSize:{}", itemCount,pageSize;
 if(pageSize != null && pageSize != 0){
 //算出余数
 Integer temp = (pageNum*pageSize-itemCount)%pageSize;
 if(temp == 0){
 //余数为0的话就pageNum-1
 currentPage = (pageNum - 1) == 0 ? 1 : (pageNum -1) ;
 }else {
 //余数不为0则等于pageNum
 currentPage = pageNum;
 }
 currenPageDto.setPresentPage(currentPage);
 }
 ResponseObj responseObj = ResponseObj.SUCCESS();
 responseObj.setData(currenPageDto);
 return responseObj;
 }
}

#dubbo接口的service层#

①://删除分组下的学生
ServiceResult<Long> deleteCorpGroup(List<Long> idList,Long groupId);
②://根据条件查询对应的条目总数
ServiceResult<Long> getTotalCount(Long groupId);

#dubbo接口的serviceImpl层#

①://删除分组下的学生
 @Override
 public ServiceResult<Long> deleteCorpGroup(List<Long> idList, Long groupId) {
 ServiceResult<Long> result = new ServiceResult<>();

 try {
 studentGroupDao.deleteCorpGroup(idList, groupId);
 } catch (Exception e) {
 log.error("调用{}方法 异常", "[RestStudentGroupServiceImpl .deleteCorpGroup]");
 log.error("方法使用参数:[idList:{},groupId:{}]", idList, groupId);
 log.error("异常信息:{}", e);
 result.setErrMessage("调用deleteCorpGroup方法异常,异常信息:" + e.getMessage());
 }

 return result;
 }
②://根据条件查询对应的条目总数
 @Override
 public ServiceResult<Long> getTotalCount(Long groupId) {
 ServiceResult<Long> result = new ServiceResult<>();

 try {
 long count = studentGroupDao.getFindCorpGroupDirectoryCount(groupId);
 result.setResult(count);
 } catch (Exception e) {
 log.error("调用{}方法 异常", "[RestStudentGroupServiceImpl .getTotalCount]");
 log.error("方法使用参数:[groupId:{}]", groupId);
 log.error("异常信息:{}", e);
 result.setErrMessage("调用getTotalCount方法异常,异常信息:" + e.getMessage());
 }
 return result;
 }

#dubbo接口的dao层#

①://删除分组下的学生
 Long deleteCorpGroup(@Param(value = "idList") List<Long> idList,@Param(value = "groupId") Long groupId);
②://根据条件查询对应的条目总数
Long getFindCorpGroupDirectoryCount(@Param(value = "groupId") Long groupId);

#dubbo接口的sql#

①://删除分组下的学生
 <delete id="deleteCorpGroup">
 delete from student_group where group_id = #{groupId} and id in
 <foreach collection="idList" index="index" separator="," item="id"
  open="(" close=")">
 #{id}
 </foreach>
 </delete>
②://根据条件查询对应的条目总数
 <select id="getFindCorpGroupDirectoryCount" resultType="long">
 SELECT COUNT(1)
 FROM student_group 
 where group_id = #{groupId}
 </select>

#Entity类(学生分组类)#(get,set函数省略)

public class StudentGroup implements java.io.Serializable {
 
 /**
 * 
 */
 private static final long serialVersionUID = 1L;
 /**
 * @描述: 
 * @字段:id BIGINT(19) 
 */ 
 private Long StudentGroupId;

 /**
 * @描述: 
 * @字段:group_id BIGINT(19) 
 */ 
 private Long groupId;

 /**
 * @描述: 
 * @字段:id BIGINT(19) 
 * 此id为学生表id
 */ 
 private Long id;

 /**
 * @描述:创建时间 
 * @字段:create_time DATETIME(19) 
 */ 
 private java.util.Date createTime;

 * @描述:创建人用户名 
 * @字段:create_user_name VARCHAR(30) 
 */ 
 private String createUserName;

 /**
 * @描述:创建人用户ID 
 * @字段:create_user_id BIGINT(19) 
 */ 
 private Long createUserId;

 /**
 * @描述:更新时间 
 * @字段:update_time DATETIME(19) 
 */ 
 private java.util.Date updateTime;

 * @描述:更新人用户名 
 * @字段:update_user_name VARCHAR(30) 
 */ 
 private String updateUserName;

 /**
 * @描述:更新人用户ID 
 * @字段:update_user_id BIGINT(19) 
 */ 
 private Long updateUserId;
 }

#Entity类(学生类)#(get,set函数省略)

public class Student implements java.io.Serializable {
 /**
 * 
 */
 private static final long serialVersionUID = 1L;

 private Long id;
 private String name ;
 private Integer age;
 }

以上这篇java实现删除某条信息并刷新当前页操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用spring boot通过自定义注解打印所需日志

    使用spring boot通过自定义注解打印所需日志

    这篇文章主要介绍了使用spring boot通过自定义注解打印所需日志的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java全面解析string类型的xml字符串

    Java全面解析string类型的xml字符串

    这篇文章主要介绍了Java全面解析string类型的xml字符串,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java设计模式之状态模式详解

    Java设计模式之状态模式详解

    Java 中的状态模式(State Pattern)是一种行为型设计模式,它允许对象在内部状态发生改变时改变其行为,本文将详细介绍 Java 中的状态模式,我们将从状态模式的概述、结构与实现、优缺点、适用场景等方面进行讲解,需要的朋友可以参考下
    2023-05-05
  • 基于SpringBoot实现代码在线运行工具

    基于SpringBoot实现代码在线运行工具

    这篇文章主要介绍了如何利用SpringBoot实现简单的代码在线运行工具(类似于菜鸟工具),文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06
  • 基于Java编写一个数据库比较工具类

    基于Java编写一个数据库比较工具类

    这篇文章主要为大家详细介绍了如何基于Java编写一个数据库比较工具类,其中比较结果会以现数据库的视角说明,感兴趣的小伙伴可以了解一下
    2023-07-07
  • Assert.assertNotNull()断言是否是空问题

    Assert.assertNotNull()断言是否是空问题

    这篇文章主要介绍了Assert.assertNotNull()断言是否是空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • java9迁移注意问题总结

    java9迁移注意问题总结

    本篇文章给大家详细整理了java9迁移注意的问题,希望我们整理的内容能够帮助到大家。
    2018-02-02
  • Java实现BP神经网络MNIST手写数字识别的示例详解

    Java实现BP神经网络MNIST手写数字识别的示例详解

    这篇文章主要为大家详细介绍了Java实现BP神经网络MNIST手写数字识别的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-01-01
  • 优化Java内存管理来防止“GC”错误的方法详解

    优化Java内存管理来防止“GC”错误的方法详解

    垃圾回收(GC)是 Java 中的一个重要机制,它可以管理内存并回收不再使用的对象所占用的资源,在本文中,我们将探讨一些技巧,帮助您避免这一错误,确保您的 Java 应用程序顺利运行,需要的朋友可以参考下
    2023-11-11
  • seata-1.4.0安装及在springcloud中使用详解

    seata-1.4.0安装及在springcloud中使用详解

    这篇文章主要介绍了seata-1.4.0安装及在springcloud中使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论