Mysql入门,最基本的增删改查

前后端分离,基于Mybatis的增删改查

分页查询

现在大多分页查寻都是基于Mybatis-plus,简单,快捷,但是Mybatis-plus只能实现单表查询,而现在大多项目,都是多表查询的。我在公司实习的时候,要求写的最简单的模块,便是使用Mybatis-plus的,将一张表分页查询到页面,但是到之后的模块,个人的短板就彰显出来了,甚至对于最简单的使用Mybatis实现增删改查,都要花费很久,所以,被主管强烈要求从头再来。

分页查询

基本第一步,实体类封装数据库表:
这个就很简单了,根据数据库表,将里面的数据一一对应封装起来。
lombok的@Data 封装set和get方法,这样程序员只需要加一个@Data方法便可以省略多行代码,而@TableName(“ 表”)则负责映射数据库表,而@TableField(“”)和表中数据一一映射。需要注意的时是,类的命名在结尾为加上Entity,意味实体的意思。而pojo则是针对需要,但是表中没有的数据准备的,这个之后会讲。Mysql入门,最基本的增删改查_第1张图片

写好实体类后,便开始进行开发,首先时Controller层,写Controller类,在前后端分离的项目中,很多以前后端负责的地方,都变成了前端负责,有前端画页面,然后需要哪些后端的数据,便将需要的参数封装起来,放给后端,Controller层的功能就在于接受前端发送来的参数,这一步,我们需要的考虑的有:用什么来接受参数,以及非空判断。下图为:Mybatis
Mysql入门,最基本的增删改查_第2张图片
Controller需要加@Controller和@ResponseBody以及@RequestMapping;前面两个的目的在于告诉系统这是Controller和代码的位置,Springboot现在有了新的注释:@RestController=@Controller+@ResponseBody;当然它的功能不止如此,有兴趣的同学可以点击进去看看;而@RequestMapping的作用是扫描;后面则是路径;是前端映射后端所需功能的具体路径,而下面的每一个具体方法上的,则是具体方法路径。
@ GetMapping、@PostMapping、@GetMapping、@PutMapping这四个都可以用@RequestMapping代替,这所以写成这四种,是为了便于程序员阅读,分别代表:增删改查;
另外:在接收参数的时候,非空判断一般都是在serviceImple服务层进行的,到那时Springboot自带判断是否非空的注解,可以帮助程序员减少一些代码,分别是:@NotNull、@NotEmpty和@NotBlank;分别针对单个参数和数量很多的集合参数。例如:Integer可以使用@NotNull,而实体类封装的参数则可以使用@NotEmpty,注解虽好也有不足,他们只能判断传来的参数是否非空,具体你所需要的参数是否齐全则无法判断,还是要在ServiceImpl层做具体判断。
在Controller层中调用Service层的方法来实现代码,而ServiceImpl继承Service,来具体实现代码。逻辑运算都是在这里;
Mysql入门,最基本的增删改查_第3张图片
Mybatis-plus实现分页查询,第一行代码即是,而从第二行开始的则是搜索参数的封装。搜索的参数由前端定义并发送给我们,我们只需要提供搜索方法和搜索参数所对应的数据库表中的数据,然后,封装返回即可,调用dao层的方法,dao层只需要继承BaseMapper<实体类>,xml和相关的sql语句都不需要写,因为Mybatis-plus都封装好了。
在这里插入图片描述

Mybatis

但是Mybatis就相当麻烦了;
Mysql入门,最基本的增删改查_第4张图片
首先要判断前端传来的参数是否为空,然后需要传来的参数page和size,判断页面反映数据,需要多少页page,每一页需要多少条数据size;
而page和size则是数据库中没有的,所以要另外写一个实体类来封装他们,即:pojo的vo,这些命名和使用规则,目前我所了解到的都是便于区分,方便程序员浏览和理解,对于高级程序员而言,第一条便是,写出让机器认识的代码很容易,写出让人认识的代码才是厉害。
Mysql入门,最基本的增删改查_第5张图片
另外,因为没有Mybatis-plus的封装,所以搜索区域所需要的参数,也写在这里,方便接受前端传来的参数。

Mysql入门,最基本的增删改查_第6张图片
后端使用前端传来的参数来查询数据库,使用Map来封装所查到的数据,
调用dao层的方法来查询数据:

Mysql入门,最基本的增删改查_第7张图片
Mysql入门,最基本的增删改查_第8张图片
只查询数据库的参数,并不需要很多,但返回到前端的数据却不少。根据搜索的条件显示数据,所以搜索和分页查询可以放在一起写。即使在Mybatis-plus中使用Map接收前端参数,也是为了便于使用QueryWrapper判断搜索条件。

然后便是基于Mybatis的最基本的增删改查,这一点在Controller层和Service层中,Mybatis和Mybatis-plus都差不多:

Mysql入门,最基本的增删改查_第9张图片
然后在ServiceImpl层中,新增:

Mysql入门,最基本的增删改查_第10张图片

查看详情:

Mysql入门,最基本的增删改查_第11张图片

编辑:
Mysql入门,最基本的增删改查_第12张图片
无外乎三点:1.用什么类型返回
2.作非空判断
3.接收参数
返回无非是:Map、Result和实体类
接受参数无非是选择用:Map接收、实体类接受,基本类型接受,另外需要注意的是基本类型都要改成封装类型:int-----Integer

dao层:
Mysql入门,最基本的增删改查_第13张图片
dao层需要注意的也是两点:接收参数和返回类型,返回类型要基于sql语句来考虑,返回整张表的数据:Map;查询一条数据:实体类,返回编辑结果:Integer

最复杂头疼,以后多表联查,一对多、多对一、多对多表的查询的sql语句:
Mysql入门,最基本的增删改查_第14张图片
上面的是插入一条数据到一张表中,有多有烦又麻烦,所以这种都以及被前任封装好了,使用Mybatis–plus就可以,不用写,写了反而容易出错,还都是小错。
但是,以后复杂的查询,比这更多更乱,更头疼,所以,乘着有时间,还是不要太依赖Mybatis-plus,好好练练Mybatis吧!

另外,可能有人注意到,为什么没有删除:因为,我还在写!!!
是的,使用Mybatis-plus写删除,在ServiceImpl层中可以使用QueryWrapper判断前端传来的参数和数据库id,并且封装好,作为查询条件,但是Mybatis,我不知道怎办啊!!!!!
Mybatis-plus:
Mysql入门,最基本的增删改查_第15张图片

你可能感兴趣的:(mysql,数据库,sql)