一、创建数据库表

  1. 使用navicatmysql命令行创建数据库misp,字符集选择utf8mb4。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22716353/1632558992117-752b519f-9f49-4b30-bb55-b65f64d34bff.png#clientId=u2a9c110d-4209-4&from=paste&height=321&id=ucdfbc219&margin=%5Bobject%20Object%5D&name=image.png&originHeight=574&originWidth=649&originalType=binary&ratio=1&size=19539&status=done&style=none&taskId=u0b3597a5-4a97-46db-955f-64ca7c04e19&width=363.5)<br />创建pos_category和lab_book表<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22716353/1632559219403-5a0698e7-f6fb-458a-97fc-d251c783675a.png#clientId=u2a9c110d-4209-4&from=paste&height=133&id=ueb819aa7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=265&originWidth=1558&originalType=binary&ratio=1&size=51720&status=done&style=none&taskId=u2d53de4a-5ae0-44c7-80ce-122439cd88d&width=779)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/22716353/1632559254971-318084b3-8045-468d-a1a2-fec280d2d36c.png#clientId=u2a9c110d-4209-4&from=paste&height=188&id=uf6565b8d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=375&originWidth=950&originalType=binary&ratio=1&size=56652&status=done&style=none&taskId=uddb0e778-efe4-425b-832d-5922a589293&width=475)

二、配置mybatis和druid

本项目需要用到mybatis-spring-boot和阿里巴巴的druid连接池。
mybatis简单易用,是当前主流持久层框架。druid是阿里巴巴数据库连接池,有强大的sql监控功能。
Springboot官方技术推荐分别是springboot-data-jpa和hikari。因此,springboot中使用mybatis和druid都需要额外进行配置。
此外,springBoot官方推荐的json库是Jackson,分页工具是jpa分页。本项目考虑使用阿里巴巴的fastjson和mybatis的分页插件pageHelper。

1.修改pom.xml


在项目根目录pom.xml中统一管理版本。
image.png
在mis-core模块的pom.xml中加入maven依赖配置如下。
image.png
mis-lab模块依赖mis-core,所以再mis-lab模块pom.xml下添加
image.png
mis-web模块pom.xml中添加mis-lab依赖。
image.png

2.修改application.yml


在mis-web模块src/main/resource目录下的配置文件application.yml中配置mybatis和druid相关配置
image.png
修改druid数据源设置的数据库连接参数为本机mysql设定。
如果项目分包不同或者xml文件位置不同,请对应修改mybatis配置。


3.新建DruidConfig配置类


在mis-core模块增加edu.scau.mis.core.config包,新建DruidConfig类,代码如下

image.png

4.添加mybatis配置


在mis-web模块src/main/resource目录下新建mybatis目录夹和mybatis-config.xml文件

image.png
至此,Springboot集成持久层框架Mybatis和数据库连接池Druid。


三、编写Pos系统产品管理后端代码


1.PosCategory

image.png

2.CategoryMapper


@Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理。
@Component是通用注解。
以下三个注解是@Component注解的拓展,并且具有了特定的功能:
@Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。
@Service是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。
@Controller(包括@RestController)是spring-mvc注解,具有将请求进行转发,重定向的功能。

Mybatis Mapper接口CategoryMapper如下:
image.png

3.CategoryMapper.xml

为避免将sql语句混入Java代码中,Mybatis 映射文件CategoryMapper.xml代码如下:
此处注意mapper的namespace里面的包名需要核对,不然后续的运行过程中会出现“程序包不存在”的报错。
image.png

4.ICategoryService及实现类CategoryServiceImpl


Servcie层接口ICategoryService 和CategoryServiceImpl代码。
注意import的包名!!经常有重复前缀的情况出现,会运行失败,但是不会提示是包名错误,比较难发现。
image.png
image.png

四、Restful接口

mis-web模块为web端的Restful接口,所有模块接口都放入该模块。该模块也是SpringBoot项目启动主程序和配置文件所在模块。

1.CategoryController

SpringMvc提供对Restful支持,通过提供一系列注解实现。
@Controller声明一个处理请求的的控制器。
@RequestMapping注解在类或方法上,指定可以接收的url,可以通过method指定接收http请求的方法。它有四种特例,分别对应不同方法。

  • @GetMapping,作用等同于@RequestMapping(method=RequestMethod.GET),用于查询操作。
  • @PostMapping,作用等同于@RequestMapping(method=RequestMethod.POST),用于新增操作。
  • @PutMapping,作用等同于@RequestMapping(method=RequestMethod.PUT),用于更新操作。
  • @DeleteMapping,作用等同于@RequestMapping(method=RequestMethod.DELETE),用于删除操作。

@ResponseBody将响应内容转换成json格式。json格式通常是前端javascript指定的数据交换格式。
@RestController相当于@Controller+@ResponseBody的组合,对外接口默认返回json格式。
前后端分析开发要求controller返回json,因此选择@RestControlller注解。
编写控制类CategoryController,代码如下
image.png

2.接口测试

运行MisApplication,启动服务进行测试。

浏览器测试

在浏览器输入访问地址进行测试。
image.png

五、配置查看druid监控

druid自带通过web进行SQL监控功能。

1.配置druid监控

之前DruidConfig已经进行了配置,详情可查看本笔记的2.3新建DruidConfig配置类相关代码。

2.查看druid监控

在浏览器中访问localhost:8080/druid,用DruidConfig配置的用户名admin,密码123456登录可查看监控。

image.png
进入后,可查看各项监控功能。每执行一次sql语句,sql监控可查看执行情况。监控可作为运维工具,也可作为开发过程中性能优化工具。通过产看执行次数、执行时间等进行有选择优化。
image.png
image.png
恭喜您,Springboot整合mybatis和druid成功。

六、收获体会

这次的过程对比上次困难非常非常非常多,我总结了一下主要是包名和部分文件后缀的问题。基本上每一步都有报错,而且也发现上一次的实验有配置错误的地方,及时更正了。下面列出几个,解决起来耗费很多时间的问题:
① 在导入完相关代码后,我的mybatis配置文件首行红色,提示Resource registered by this uri is not recognized。在百度后,得到解决方案:https://blog.csdn.net/u014594604/article/details/86438990
结果仍然报错,于是搜索查看了很多条答案,给出的方案都不可行。在我重新看上面的方案后,我才发现自己粗心,点错添加网址的加号了,应该点下面的,就能解决了。
image.png
②在运行过程中,报错提示:Could not find artifact …,原因是多模块项目构建时,先将parent项目要先install一回,之后子项目才可以运行mvn compile命令,否则就会报如上异常。
https://blog.csdn.net/zpwggi123/article/details/87189959
③Dependency not found的报错,这个我其实仍然不知道是什么原因导致的,但是根据下面的网址操作,再加上重新导入了一次JUnits,就不报错了。
https://blog.csdn.net/goQuesting/article/details/78422964
④alibaba的包和druid的包报错,依赖也标红,后来重新更换了maven3.6.3版本就没事了,但是3.8.2也能用,只是要加http改一下代码
⑤卡了我最久最久的地方,就是我的mapper包一直说不存在,还有就是后面运行的时候报servlet错误这两个问题(前面的先解决了然后又有后面的报错),在我点开每一个文件仔细核对代码后,发现很多是由于之前创建包的时候,命名和文件类型的问题,命名有几个重复前缀,导致后面的文件自动导入的包名有误,而且不显示报错!!必须仔细检查并改正成正确的无重复包名。
还有就是我创建文件的时候,因为一开始不知道是什么文件类型,就随便创了,但是是不行的,如果文件类型不是java文件,就手动改一下后缀.java,(最好以后都直接先选好文件类型,不要随便选空白文件),如下图。主要是这个错误无提示,所以真的花了很长时间解决。我是除了mapper以外还有service的文件也没改后缀,改了两个之后(再加上之前的包名细微的纠正),就顺利运行整个项目了。(感动)
image.png
19级信管3班 0318谭靖谊