当前位置:   article > 正文

如何使用使用三层Mapper、Service、Controller对数据库进行增删改操作_controller层,service层,mapper

controller层,service层,mapper

首先了解一下,什么是DAO三层架构:

在Java架构中,通常采用MVC模型,其结构主要包括DAO(Mapper)、Service和Controller三层。

  1. Mapper(DAO)层:这是数据访问层,主要负责与数据库进行交互。具体来说,对某个表的增删改查等底层数据操作都在这一层实现。每个DAO通常与数据库的一张表对应,封装了针对该表的基本操作如增删改查等。为了保持结构清晰,建议DAO只做原子操作。在这一层,首先设计接口,然后在Spring配置文件中定义接口的实现类。这样,在模块中调用接口时,就不需要关心具体的实现类是哪个。

  2. Service层:这是服务层,用于处理业务逻辑。Service层会调用Mapper层的接口来执行具体的数据库操作。此外,Service层还负责处理一些与业务相关的任务,例如校验、计算和转换等。Service层的结构也包括接口文件和接口实现类文件两部分,接口文件中定义了在Controller层中需要调用的方法;接口实现类文件中则完成这些方法的具体实现。

  3. Controller层:这是控制器层,主要负责处理用户请求和响应。Controller层接收前端的请求,然后调用Service层的方法来处理业务逻辑。处理完成后,Controller层会返回一个视图给客户端,展示相应的数据。

数据库样式如下: 

 创建实体类对象:

  1. /**
  2. * 部门实体类
  3. */
  4. @Data
  5. @NoArgsConstructor
  6. @AllArgsConstructor
  7. public class Dept {
  8. private Integer id; //ID
  9. private String name; //部门名称
  10. private LocalDateTime createTime; //创建时间
  11. private LocalDateTime updateTime; //修改时间
  12. }

 下面代码是为了,让控制统一的输出格式:

  1. @Data
  2. @NoArgsConstructor
  3. @AllArgsConstructor
  4. public class Result {
  5. private Integer code;// 响应码: 1代表成功 0 代表失败
  6. private String mes; // 响应信息 描述字符串
  7. private Object date; // 返回的数据
  8. public static Result success(){
  9. return new Result(1, "success", null);
  10. }
  11. public static Result success(Object date){
  12. return new Result(1, "success", date);
  13. }
  14. public static Result error(String msg){
  15. return new Result(0, msg, null);
  16. }
  17. }

 网络请求成功后,会返回一下代码,示例右图:

首先定义启动类Controller:

  1. /**
  2. * 部门管理Controller
  3. */
  4. @RequestMapping("/depts")
  5. @Slf4j
  6. @RestController
  7. public class DeptController {
  8. @Autowired
  9. private DeptService deptService;
  10. @GetMapping()
  11. public Result list(){
  12. log.info("查询所有部门的信息");
  13. //调用service查询部门数据
  14. List<Dept> deptList = deptService.list();
  15. return Result.success(deptList);
  16. }
  17. /**
  18. * 删除部门
  19. */
  20. @DeleteMapping("/{id}")
  21. public Result delete(@PathVariable Integer id){
  22. log.info("根据ID删除部门:{}", id);
  23. //调用service删除部门
  24. deptService.delete(id);
  25. return Result.success();
  26. }
  27. /**
  28. * 添加部门信息
  29. */
  30. @PostMapping()
  31. public Result add(@RequestBody Dept dept){
  32. log.info("添加部门:{}", dept);
  33. //调用service添加部门信息
  34. deptService.add(dept);
  35. return Result.success();
  36. }
  37. /**
  38. * 修改部门数据
  39. */
  40. @PutMapping()
  41. public Result update(@RequestBody Dept dept){
  42. log.info("修改部门名:{}", dept);
  43. //调用service修改部门信息
  44. deptService.update(dept);
  45. return Result.success();
  46. }
  47. }

Service服务层接口:

  1. public interface DeptService {
  2. //查询所有部门的数据
  3. List<Dept> list();
  4. //根据id删除部门信息
  5. void delete(Integer id);
  6. //添加部门信息
  7. void add(Dept dept);
  8. //修改部门信息
  9. void update(Dept dept);
  10. }

 实现Service服务层接口:

  1. @Service
  2. public class DeptServiceImpl implements DeptService {
  3. @Autowired
  4. private DeptMapper deptMapper;
  5. @Override
  6. public List<Dept> list(){
  7. return deptMapper.list();
  8. }
  9. @Override
  10. public void delete(Integer id){
  11. deptMapper.deleteById(id);
  12. }
  13. @Override
  14. public void add(Dept dept){
  15. dept.setUpdateTime(LocalDateTime.now());
  16. dept.setCreateTime(LocalDateTime.now());
  17. deptMapper.insert(dept);
  18. }
  19. @Override
  20. public void update(Dept dept) {
  21. dept.setUpdateTime(LocalDateTime.now());
  22. deptMapper.updateById(dept.getId(), dept.getName());
  23. }
  24. }

定义Mapper,数据库的具体操作:

  1. @Mapper
  2. public interface DeptMapper {
  3. /**
  4. * 查询所有部门的数据
  5. */
  6. @Select("select * from dept")
  7. List<Dept> list();
  8. //删除固定部门数据
  9. @Delete("delete from dept where id = #{id}")
  10. void deleteById(Integer id);
  11. //添加部门数据
  12. @Insert("insert into dept(name, create_time, update_time) values(#{name},#{createTime},#{updateTime})")
  13. void insert(Dept dept);
  14. //修改部门信息
  15. @Update("update dept set name = #{name} where id = #{id}")
  16. void updateById(Integer id ,String name);
  17. }

配置文件连接数据库:

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/tlias
  3. spring.datasource.username=root
  4. spring.datasource.password=xxxx
  5. mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  6. mybatis.configuration.map-underscore-to-camel-case=true

完成以上操作,便可以对数据库进行简单的增删改查操作了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/583594
推荐阅读
相关标签
  

闽ICP备14008679号