How to delete a piece of information and return to the current page in Java...

I won't talk too much nonsense, everyone should just look at the code directly

//执行的是删除信息的操作
 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();
 } 
  
 }
image.png
image.png

Supplementary knowledge: how to realize when paging, when the last record of this page is deleted, the realization of automatic jump to the next page (implemented in java)

Detailed explanation of the problem
When doing batch deletion, it is found that if the entire page is deleted in batch, it will automatically jump to the first page of the first page instead of returning to the previous page of the current page. This does not meet the product requirements and makes the interface interaction bad, which brings users Come for a bad experience.

Detailed explanation of the idea
When passing parameters at the controller layer, it is necessary to consider not only the id set that needs to be deleted, but also the query conditions of pageSize, pageNum and the total number of sets (for example: this example will pass in groupId (group id)), After the deletion is successful, initialize the current page, first query the total number of items according to the query conditions, in the case that pageSize is not equal to null or 0. Calculate the remainder [(pageSize*pageNum-count)%pageSize]. If the remainder is 0, the current page is equal to pageNum-1; if the remainder is not 0, then the current page=pageNum. Just send the result current page to the foreground.

Background code implementation

controller layer#

@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 layer#

@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 layer#

@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;
 }
}

The service layer of the dubbo interface#

①://删除分组下的学生
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;

}

|

[](javascript:; "Select all")[](javascript:; "Copy java code")

#dao layer ofdubbo interface#

`①:``//删除分组下的学生`

`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;

}

|

[](javascript:; "全选")[](javascript:; "复制java代码")

<textarea style="margin: 0px; padding: 0px; outline: none; font: 16px / 24px tahoma, arial, 宋体;"></textarea>

Entity类(学生类)#(get,set函数省略)
`public` `clas` `Student` `implements` `java.io.Serializable {
    
    `

`/**`

`*`

`*/`

`private` `static` `final` `long` `serialVersionUID = 1L;`

`private` `Long id;`

`private` `String name ;`

`private` `Integer age;`

`}`

 |

Guess you like

Origin blog.csdn.net/dcj19980805/article/details/115175864