前言
这里默认都搭建好了框架,因此搭建框架的部分和一些要使用的依赖就不再赘述。一些说法是本人自己的理解,可能不准确,如有错误可以指出。
三层架构之间的工作
首先梳理下工作原理,查询操作其实就是由数据访问层(dao层)从数据库拿到数据,传到业务逻辑层(service层)进行逻辑处理,最后传到展示层(controller层)交给前端。而插入或者修改就是从展示层拿到数据,传到业务逻辑层进行相应逻辑判断,最后传到数据访问层进行插入或者修改或者删除操作。而这其中进行数据传递的媒介就是数据库中表对应的实体类。(配合图片使用效果更佳)
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页面
点击Execut进行更新
结果如图所示,显示插入成功
让我们来通过查询接口看看结果
其他杂项
公共工具类(用于返回一些成功或者失败的信息,“不太重要”)
数据库配置
总结
写了那么多一定有人好奇,既然是数据库操作那么怎么从头到尾一个sql语句没有看到呢?
这就是框架的强大之处,mybatis框架已经把基本的增删查改操作封装进了框架,基本的增删查改按照上述步骤都可以实现。或者可以理解为这些基本的sql语句已经封装进了BaseMapper接口中,如果有其他需求,比如多表联查,则需要在dao层中与数据库交互的接口中定义方法,使用注解进行特殊sql语句的书写。(这只是方法之一,还有一个映射的方法还没学会)