说明
- 1.给Service层的方法加个注释就可以了, 比PHP的简单很多
步骤
以删除部门时, 同时删除部门下的员工为场景
- 1.部门管理控制器中, 不用改动 (代码省略部分)
package com.tlias.controller;
@RestController
public class DeptController {
@DeleteMapping("/depts/{id}")
public Result delete(@PathVariable Integer id) {
log.info("根据ID删除部门", id);
deptService.delete(id);
return Result.success();
}
}
- 2.部门Service实现
package com.tlias.service.impl;
import com.tlias.mapper.DeptMapper;
import com.tlias.mapper.EmpMapper;
import com.tlias.pojo.Dept;
import com.tlias.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
@Service
public class DeptServiceImpl implements DeptService {
// 调用部门管理的Mapper(Service调用DAO层)
@Autowired
private DeptMapper deptMapper;
@Autowired
private EmpMapper empMapper;
@Override
public List<Dept> list() {
return deptMapper.list();
}
@Transactional //将事务交给SpringBoot处理
@Override
public void delete(Integer id) {
// 1.1删除部门
deptMapper.deleteById(id);
// 强制抛出异常进行测试
// Integer res = 1 / 0;
// 2.删除员工
empMapper.deleteByDeptId(id);
}
public void add(Dept dept) {
dept.setCreateTime(LocalDateTime.now());
dept.setUpdateTime(LocalDateTime.now());
deptMapper.add(dept);
}
public void update(Dept dept)
{
dept.setUpdateTime(LocalDateTime.now());
deptMapper.update(dept);
}
public Dept view(Integer id)
{
return deptMapper.view(id);
}
}
- 3.员工管理Mapper修改,添加删除方法
package com.tlias.mapper;
import com.tlias.pojo.Emp;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.DeleteMapping;
import java.time.LocalDate;
import java.util.List;
@Mapper
public interface EmpMapper {
// 使用pageHelper来分页, 这里正常写
// @Select("SELECT * from emp ") // 注释掉, 就会使用xml
public List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
void delete(List<Integer> ids);
@Insert("insert into emp (username, name, gender, image, job, entrydate, dept_id, create_time, update_time) " +
"values (#{username}, #{name}, #{gender}, #{image}, #{job}, #{entrydate}, #{deptId}, #{createTime}, #{updateTime})")
void insert(Emp emp);
@Select("SELECT * from emp where id=#{id} limit 1")
Emp getById(Integer id);
void update(Emp emp);
@Select("SELECT * from emp where username=#{username} and password=#{password}")
Emp getByUsernameAndPassword(Emp emp);
// 添加根据部门ID删除员工
@Delete("delete from emp where dept_id=#{deptId}")
void deleteByDeptId(Integer deptId);
}
- 4.添加事务日志, 在yml文件中
#spring事务管理日志
logging:
level:
org.springframework.jdbc.support.JdbcTransactionManager: debug