前言

这里默认都搭建好了框架,因此搭建框架的部分和一些要使用的依赖就不再赘述。一些说法是本人自己的理解,可能不准确,如有错误可以指出。

三层架构之间的工作

首先梳理下工作原理,查询操作其实就是由数据访问层(dao层)从数据库拿到数据,传到业务逻辑层(service层)进行逻辑处理,最后传到展示层(controller层)交给前端。而插入或者修改就是从展示层拿到数据,传到业务逻辑层进行相应逻辑判断,最后传到数据访问层进行插入或者修改或者删除操作。而这其中进行数据传递的媒介就是数据库中表对应的实体类。(配合图片使用效果更佳)

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_后端

pojo包下的就是对应的实体类

实现增删查改

1.创建表对应的实体类 

本部分比较简单就不做展示,注意生成get,set方法即可

2.写数据访问层dao

注意该接口继承BaseMapper

/**
 * demo示例的dao数据逻辑层
 * 需要继承mybatis plus的basemapper接口
 */
@Repository
public interface DemoDao extends BaseMapper<Demo> {
}

3.写service层中想要实现的逻辑

这里分为两个小步骤(这里只写了插入数据做示例,删除、修改、查询同理)

第一步是写接口定义想要完成的逻辑

/**
 * demo示例的service层接口
 */
public interface DemoService {

    /**
     * 添加示例
     * @param demo
     * @return
     */
    int insertDemo(Demo demo);

第二步是写接口的实现类,这里注意使用IOC自动注入对象实例

/**
 * demo示例service层实现类
 */
@Service
public class DemoServiceImpl implements DemoService {
    /**
     * 使用spring的ioc容器自动注入对象实例
     */
    @Autowired
    private DemoDao demoDao;
    /**
     * 添加示例
     *
     * @param demo
     * @return
     */
    @Override
    public int insertDemo(Demo demo) {
        return demoDao.insert(demo);
    }

4.在展示层调用实现的插入方法

因为没有前端页面,所以这里的端口测试由swagger完成

emmm,至于swagger的调试,之后再另写一篇文章展示

/**
 * demo示例的controller控制层
 */
@Api(tags = "demo案例接口")
@RestController
@RequestMapping("/demo")
public class DemoController {

    @Autowired
    private DemoService demoService;


    @ApiOperation("添加demo案例")
    @ApiImplicitParams({
            @ApiImplicitParam(name="demoid",value = "自增长主键,不传递"),
            @ApiImplicitParam(name="demoname",value="传递字符串"),
            @ApiImplicitParam(name="demostate",value = "状态,0-不可用;1-正常")
    })
    @GetMapping("/insert")
    public BaseMessage insertDemo(Demo demo){
        BaseMessage msg = new BaseMessage();
        int rtn = demoService.insertDemo(demo);
        msg.setCode(rtn);
        if(rtn>0){
            msg.setMsg("保存demo成功");
        }else{
            msg.setMsg("保存demo失败");
        }
        return msg;
    }

 

实现效果:

swagger页面

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_实体类_02

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_实体类_03

点击Execut进行更新

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_实体类_04

结果如图所示,显示插入成功

让我们来通过查询接口看看结果

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_实体类_05

 其他杂项

公共工具类(用于返回一些成功或者失败的信息,“不太重要”)

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_java_06

数据库配置

springboot druid mybatis mysql 数据库增删改查 springboot增删改查执行流程_java_07

 

 

总结

写了那么多一定有人好奇,既然是数据库操作那么怎么从头到尾一个sql语句没有看到呢?

这就是框架的强大之处,mybatis框架已经把基本的增删查改操作封装进了框架,基本的增删查改按照上述步骤都可以实现。或者可以理解为这些基本的sql语句已经封装进了BaseMapper接口中,如果有其他需求,比如多表联查,则需要在dao层中与数据库交互的接口中定义方法,使用注解进行特殊sql语句的书写。(这只是方法之一,还有一个映射的方法还没学会)