物理或逻辑删除的概念解析,物理删除表示从数据库表中删除该记录,逻辑删除表示改变状态,数据过滤的时候达到不可见的效果。
$("#deleteView").click("click", function() {//绑定删除按扭
var cbox = grid.getSelectedCheckbox();
if (cbox.length == 0) {
parent.$.ligerDialog.alert("请选择删除项");
return;
}
parent.$.ligerDialog.confirm('删除后不能恢复,确定删除吗?', function(confirm) {
if (confirm) {
$.ajax({
type: "post", //使用get方法访问后台
dataType: "json", //json格式的数据
async: false, //同步 不写的情况下 默认为true
url: rootPath + '/background/role/deleteById.html', //要访问的后台地址
data: {ids:cbox.join(","),type:0}, //要发送的数据
success: function(data){
if (data.flag) {
parent.$.ligerDialog.success('删除成功', '提示', function() {
loadGird();//重新加载表格数据
});
}else{
parent.$.ligerDialog.warn("删除失败");
}
}
});
}
});
});
});
说明:
1、删除按钮绑定删除事件。
2、删除提交前需要选择删除项,否则弹出提示信息。
3、删除上送删除类型,选择物理删除或者逻辑删除。
4、成功后重新加载表格数据,失败则提示删除失败。
/**
* 批量删除
*/
@ResponseBody
@RequestMapping("deleteById")
public Map<String, Object> deleteById(String ids, int type) {
Map<String, Object> map = new HashMap<String, Object>();
boolean res = false;
try {
String[] id = ids.split(",");
List<String> idList = new ArrayList<>();
for (String str : id) {
if(!Common.isEmpty(str)){
idList.add(str);
}
}
if (idList.isEmpty()){
map.put("flag", false);
return map;
}
if (0 == type){
//逻辑删除
res = roleService.deleteByLogic(idList);
}else{
//物理删除
res = roleService.deleteByPhysics(idList);
}
map.put("flag", res);
} catch (Exception e) {
map.put("flag", false);
}
return map;
}
说明:
1、组装上送记录id成集合,过滤无效空数据,若集合为空则返回false。
2、当type上送0,表示逻辑删除,否则进行物理删除。
3、记录并返回删除结果,若出现异常也是返回失败。
<delete id="deleteByPhysics" parameterType="java.util.List">
DELETE FROM sys_role WHERE id IN(
<foreach collection="list" item="id" index="index" separator=",">
${id}
</foreach>
)
</delete>
<delete id="deleteByLogic" parameterType="java.util.List">
update sys_role SET enable = '-1' WHERE id IN(
<foreach collection="list" item="id" index="index" separator=",">
${id}
</foreach>
)
</delete>
说明:
1、物理删除使用delete,而逻辑删除使用update。
2、foreach 批量处理集合。
软件定制及其他业务
请加微信号:13128600812
公众号: