单表操作删除时,默认框架已提供了,但有时候需要根据条件判断是否允许删除;如,客户表,如果客户信息已被使用,而不允许被删除。
方法同数据唯一性验证,查询关联表是否有引用记录,并统计数量,大于 0,则不允许删除。
CustomerDao.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.jeesite.modules.customer.dao.CustomerDao">
<!-- 查询数据
<select id="findList" resultType="Customer">
SELECT ${sqlMap.column.toSql()}
FROM ${sqlMap.table.toSql()}
<where>
${sqlMap.where.toSql()}
</where>
ORDER BY ${sqlMap.order.toSql()}
</select> -->
<select id="getOrderReviewNum" resultType="Long">
SELECT
count(0)
FROM
`product_order_review` a
where a.status =0 AND a.customer_code = #{customerCode}
LIMIT 1
</select>
<select id="getOrderNum" resultType="Long">
SELECT
count(0)
FROM
`product_work_order` a
where a.status =0 AND a.customer_code = #{customerCode}
LIMIT 1
</select>
<select id="getTransportNum" resultType="Long">
SELECT
count(0)
FROM
`product_transport` a
where a.customer_code = #{customerCode}
LIMIT 1
</select>
</mapper>
<?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.jeesite.modules.customer.dao.CustomerDao">
<!-- 查询数据
<select id="findList" resultType="Customer">
SELECT ${sqlMap.column.toSql()}
FROM ${sqlMap.table.toSql()}
<where>
${sqlMap.where.toSql()}
</where>
ORDER BY ${sqlMap.order.toSql()}
</select> -->
<select id="getOrderReviewNum" resultType="Long">
SELECT
count(0)
FROM
`product_order_review` a
where a.status =0 AND a.customer_code = #{customerCode}
LIMIT 1
</select>
<select id="getOrderNum" resultType="Long">
SELECT
count(0)
FROM
`product_work_order` a
where a.status =0 AND a.customer_code = #{customerCode}
LIMIT 1
</select>
<select id="getTransportNum" resultType="Long">
SELECT
count(0)
FROM
`product_transport` a
where a.customer_code = #{customerCode}
LIMIT 1
</select>
</mapper>
<?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.jeesite.modules.customer.dao.CustomerDao"> <!-- 查询数据 <select id="findList" resultType="Customer"> SELECT ${sqlMap.column.toSql()} FROM ${sqlMap.table.toSql()} <where> ${sqlMap.where.toSql()} </where> ORDER BY ${sqlMap.order.toSql()} </select> --> <select id="getOrderReviewNum" resultType="Long"> SELECT count(0) FROM `product_order_review` a where a.status =0 AND a.customer_code = #{customerCode} LIMIT 1 </select> <select id="getOrderNum" resultType="Long"> SELECT count(0) FROM `product_work_order` a where a.status =0 AND a.customer_code = #{customerCode} LIMIT 1 </select> <select id="getTransportNum" resultType="Long"> SELECT count(0) FROM `product_transport` a where a.customer_code = #{customerCode} LIMIT 1 </select> </mapper>
CustomerDao.java 文件中,增加
Long getOrderReviewNum(String customerCode);
Long getOrderNum(String customerCode);
Long getTransportNum(String customerCode);
Long getOrderReviewNum(String customerCode);
Long getOrderNum(String customerCode);
Long getTransportNum(String customerCode);
Long getOrderReviewNum(String customerCode); Long getOrderNum(String customerCode); Long getTransportNum(String customerCode);
CustomerService.java 中增加及调整 delete 方法
@Autowired
private CustomerDao customerDao;
/**
* 删除数据
*
* @param customer
*/
@Override
@Transactional
public void delete(Customer customer) {
if (checkCustomerIsUse(customer.getCustomerCode())) {
throw new RuntimeException("客户已被使用,不能被删除");
}
super.delete(customer);
}
public Long getOrderReviewNum(String customerCode) {
return customerDao.getOrderReviewNum(customerCode);
}
public Long getOrderNum(String customerCode) {
return customerDao.getOrderNum(customerCode);
}
public Long getTransportNum(String customerCode) {
return customerDao.getTransportNum(customerCode);
}
public boolean checkCustomerIsUse(String customerCode) {
if (getOrderReviewNum(customerCode) > 0) return true;
if (getOrderNum(customerCode) > 0) return true;
if (getTransportNum(customerCode) > 0) return true;
return false;
}
@Autowired
private CustomerDao customerDao;
/**
* 删除数据
*
* @param customer
*/
@Override
@Transactional
public void delete(Customer customer) {
if (checkCustomerIsUse(customer.getCustomerCode())) {
throw new RuntimeException("客户已被使用,不能被删除");
}
super.delete(customer);
}
public Long getOrderReviewNum(String customerCode) {
return customerDao.getOrderReviewNum(customerCode);
}
public Long getOrderNum(String customerCode) {
return customerDao.getOrderNum(customerCode);
}
public Long getTransportNum(String customerCode) {
return customerDao.getTransportNum(customerCode);
}
public boolean checkCustomerIsUse(String customerCode) {
if (getOrderReviewNum(customerCode) > 0) return true;
if (getOrderNum(customerCode) > 0) return true;
if (getTransportNum(customerCode) > 0) return true;
return false;
}
@Autowired private CustomerDao customerDao; /** * 删除数据 * * @param customer */ @Override @Transactional public void delete(Customer customer) { if (checkCustomerIsUse(customer.getCustomerCode())) { throw new RuntimeException("客户已被使用,不能被删除"); } super.delete(customer); } public Long getOrderReviewNum(String customerCode) { return customerDao.getOrderReviewNum(customerCode); } public Long getOrderNum(String customerCode) { return customerDao.getOrderNum(customerCode); } public Long getTransportNum(String customerCode) { return customerDao.getTransportNum(customerCode); } public boolean checkCustomerIsUse(String customerCode) { if (getOrderReviewNum(customerCode) > 0) return true; if (getOrderNum(customerCode) > 0) return true; if (getTransportNum(customerCode) > 0) return true; return false; }
CustomerController.java 控制器中,调整 delete 方法
/**
* 删除数据
*/
@RequiresPermissions("customer:customer:edit")
@RequestMapping(value = "delete")
@ResponseBody
public String delete(Customer customer) {
try {
customerService.delete(customer);
return renderResult(Global.TRUE, text("删除客户信息成功!"));
} catch (RuntimeException e) {
return renderResult(Global.FALSE, text(e.getMessage()));
}
}
/**
* 删除数据
*/
@RequiresPermissions("customer:customer:edit")
@RequestMapping(value = "delete")
@ResponseBody
public String delete(Customer customer) {
try {
customerService.delete(customer);
return renderResult(Global.TRUE, text("删除客户信息成功!"));
} catch (RuntimeException e) {
return renderResult(Global.FALSE, text(e.getMessage()));
}
}
/** * 删除数据 */ @RequiresPermissions("customer:customer:edit") @RequestMapping(value = "delete") @ResponseBody public String delete(Customer customer) { try { customerService.delete(customer); return renderResult(Global.TRUE, text("删除客户信息成功!")); } catch (RuntimeException e) { return renderResult(Global.FALSE, text(e.getMessage())); } }