使 Mybatis-plus 项目正常运行
在上一章节的实验中,我们完成了 Mybatis-plus 项目的自动生成。虽说项目已经有了,但是如果我们启动项目(运行Application.java)会发现,项目还是不能实时运行,也就是说我们的项目也还是存在着错误。那么废话不多说,直接来看报错。
报错很明显:
“No qualifying bean of type ‘com.hw.domain.mapper.HeroTypeMapper’ available”
意思就是在说,Application.java 找不到这个项目中有一个叫做 mapper 的项目,并且也没有找到这个 mapper 中有一个 HeroTypeMapper 存在。那么就是要我们给 Application.java 指定一个路径咯!
所以我们打开 Application.java 的界面,给 Application.java 项目添加一个 mapper 路径的注释 @MapperScan(“com.hw.domain.mapper”) ,如图所示:
注意这里的 com.hw.domain.mapper 的路径是要你的项目里面的 mapper 包的路径哦!
接着再一次运行 Application.java 项目,就可以发现整个项目一直处在运行状态中,这就证明我们的整个 Mybatis-plus 项目就已经搭建完毕啦!

下一步,实现项目增删改查操作,并使用交互式接口调试工具呈现出来
项目的实现我们使用一款接口调试工具——Postman 来进行。它可以与我们写的 Mybatis-plus 后端项目进行交互式操作,我们既可以在 Postman 通过给定的路径查询到数据库中的数据,同时也可以在 Postman 中对数据库中的数据进行新增(insert)、修改(updata)、删除(delete)的操作,这是一个对于后端学习非常好用的工具,应用程序的资源我已经放在我的主页“资源”栏目里了,如果有需要的话大家可以拿来下载来用哦!
下面是 Postman 的主界面图:
那么下面我们就来使用 Postman 对 Mybaits-plus 项目进行对数据库的查询操作:
全表查询
首先找到你要查询的那张数据表的 controller ,这里我们就使用 Heros 表来做一下演示吧!
Heros 数据表:
在 Mybatis-plus 项目中找到 Heros 表的 controller :
在主代码中输入:
@Autowired
private HerosService herosService;
@Autowired是一种注解,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作
如果是Xx表,那么就是 XxService xxService;
注意这里的 HerosService herosService 必须要两个,一前一后,一个开头大写,一个全部小写哦!这里的代码的作用是使用 Heroscontroller 对 service 中的 HerosService 进行连接,HerosService 中有实现增删改查的功能
HerosService中什么都没有写,是因为Mybatis-plus 已经在底层代码中帮助我们写好了普通增删改查的功能的实现,所以这里还不用我们亲自动手,只需要我们对 controller 和 service 建立连接就可以轻松使用 service 里面的功能里,所以这也是 Mybatis-plus 和 Mybatis 之间最大也是最直观的区别之一!
继续在 controller 的主代码中输入:
@GetMapping("/selectAll")
List<Heros> selectAll()
{
return herosService.list();
}
即查询全表的语句!
注意,查询全表的时候,我们得出的结果是一个列表类型的结果,所以要在这里使用 List<>但是在后面的新增、删除、修改时,我们会用到别的类型
(List<>里面放的是你的开头大写的表名,其实也就是 model 里面的 Heros)
这个时候我们会发现整个 HerosController 还是处于一个爆红的状态,说明项目还存在报错,不能正常运行。
将鼠标放在爆红的地方,会发现出现了一个 import class,说明使用这个 @Autowired注释所需要的包还没有导进来,那么我们单机 import class进行导包。
导包完成之后也就不会爆红了:
同样的下面爆红的 HeroSerivce 我们也是一样的导包操作:
PS:有的时候你可能发现你的代码写的没有问题,但是就是语句存在爆红,那么很有可能就是导包出错的问题,可以检查看看是否导包,或者是检查看看导的包是否正确,如果不太确定,也可以吧前一个导包出来的 import 语句删除掉,重新选择另一个包导入看看。
写完了代码,导完了包之后,不再爆红了,成果就是这样的:
注意我用红框圈起来的部分,这很重要,因为这个就是我们通过前端 Postman 查询整个数据表的数据的路径。
那么现在,重新运行一遍 Application.java !!!这步很重要,否则刚刚写的东西无法使用!!!

那么下面就来进行对整个数据表进行查询吧!
打开 Postman ,确保这个选项显示的是 GET :
然后我们就在 GET 右边的这个框里面输入 127.0.0.1:8080/heros/selectAll,然后点击 Send:
然后我们的数据就出来啦!怎么样是不是突然觉得 Mybatis-plus 比上 Mybatis 来说非常简单!
对照一下数据表:
查询单条数据
既然能实现查询一整个表的数据,那么肯定就会有小伙伴要问了,是不是也有查询只有一条记录的方法呢?答案是当然有啦!下面我们就介绍一个按照英雄id 来查询单个英雄的方法。
还是在 HerosController 中,我们在主代码中输入:
// 查单条
@GetMapping("/selectOne/{id}")
Heros selectone(@PathVariable("id") Integer id)
{
return herosService.getById(id);
}
直接写在刚刚查全表的代码下面就好啦,不用担心冲突的发生!

按照英雄的id查询英雄的信息,那么既然是单个的英雄,出来的结果肯定就不是一个列表类型,所以我们在这里不使用 List<>,而是使用 Heros selectone(这个selectone虽说是自定义的,但是也还是要和上面的这个selectOne相对应哦!同样也是前一个大写,后一个小写的关系)
然后我们在 selectone 方法中,进行 id 的传参,英雄的编号会先从 {id} 传到下面的 “id”,最后再传送到 getById(id); 中,getById 同样也是一个 Mybatis-plus 帮我们自动写好的一个方法。(Integer id 表示的是 id 的类型定义为整数类型,不参与到方法的使用中)
老样子,重新运行一遍 Application.java !!!!!
记住这个路径!!!!后面的 127.0.0.1:8080/heros/selectOne/{id}中的{id}改成你要查新的英雄的 id

接着来到 Postman ,同样还是 GET,
输入路径 127.0.0.1:8080/heros/selectOne/105 :
编号为 105 的英雄的全部信息就出来啦!
新增英雄
还是同样的 HerosController 的主代码中,编写如下代码:
@PostMapping("/insert")
boolean insert(@RequestBody Heros heros)
{
return herosService.save(heros);
}
从新增开始,包括修改和删除,我们的数据类型都要变换成布尔(boolean)类型的数据类型,因为这三个操作和查询不一样,查询是数据库给我们数据,所以有结果呈现出来,我们就可以知道我们的方法实现到底成没成功,但是新增、修改和删除不同,这三个操作相当于是我们给数据库数据,和查询恰恰是反着来的,所以是不会有结果呈现给我们的,所以我们无法知道方法是对是错。所以这个时候,我们就要用到布尔型数据,如果我们成功的输入(修改、删除)数据到数据库里面了,那么布尔型的方法就会返回我们一个值,成功就是true,失败就是false,用来判定我们的方法成功与否。

同样的要记住路径哦!再一次,重新运行一遍 Application.java !
下面我们来到 Postman ,新增的操作和查询有很大不同,首先我们新建一个对话窗口:
在操作框中选择 POST:
在操作栏中选择 Body->raw->JSON:
因为新增(updata)操作有严格的格式限制,如果格式不正确,那么就无法成功地输入数据到数据库中。但是格式说来严格,其实也并没有那么复杂,因为每次输入的新增数据只能有一条,而恰好刚刚我们刚完成了查单条数据的操作,那么这个时候,我们就可以将刚刚的单条数据的格式给复制过来,删掉里面的数据,只留下我们需要的格式,再进行数据的输入就可以了。
函数中使用的方法是 herosService.save() 即将数据保存到数据库中,herosService.save() 同样也是 Service中自带的方法,不需要我们自己写。
首先先输入路径:127.0.0.1:8080/heros/insert:
接着我们去到刚刚的查单条的界面中,将红框中的内容全部复制下来:
粘贴到 POST 的 JSON 中去:
将数据修改一下:
点击 Send !!

如果 Body 返回 true ,则说明数据插入成功,那么我们现在来检查一下数据库:
成功插入了!!!
修改数据
还是在 HerosController 中编写代码:
@PutMapping("/updata")
boolean update(@RequestBody Heros heros)
{
return herosService.updateById(heros);
}

所谓修改数据,那么肯定也是只能一条数据一条数据的修改对吧,所以还是用样的方法。从查单条的结果中复制格式过来,也可以从刚刚的新增界面那里把数据复制过来,这样更加方便。
新建一个 Postman 界面 , 将方法选择为 PUT ,
路径设为:127.0.0.1:8080/heros/updata
同样的,在操作栏中选择 Body->raw->JSON:
从该方法的代码中我们可以看出 herosService.updateById(heros)说明该方法是按照 英雄的名称来对英雄的信息进行修改的,言下之意就是在说:英雄名称不能改,别的都可以改!
所以我们将新增界面的格式复制过来,对数据进行修改:
点击 Send !!!布尔型返回 true!说明操作成功!

删除
删除就很简单啦!在 HerosController 中编写代码:
@DeleteMapping("/delete/{id}")
boolean delete(@PathVariable("id") Integer id)
{
return herosService.removeById(id);
}

同样的,看到了传参 id ,我们就马上知道了,这个方法和查询单条数据一样,都是要在路径中加上 /{id} 即想要操作的英雄的编号的!要记得重新运行一遍哦!
重新打开一个 Postman 界面,然后选择 DELETE 功能,
输入路径 127.0.0.1:8080/heros/delete/999
这样就可以了!不要选择 Body!因为删除的时候不需要往数据库里面输入数据!

结果返回true!说明编号为999的英雄已经从数据库中被删除掉了!那么现在我们去 mysql 中验证一下:
