基于rest service的一些增删改查的操作。

数据库内预先创建的表
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
这个表是用来给大家做演示用的
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
id为主键。设置为自增长。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
运行,生成代码
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
运行的控制台输出
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

可以看到相关的代码已经生成了
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

拷贝相关生成的代码。mapper工程拷贝两个 一个stuMapper类还有一个xml映射类,
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
pojo是放在pojo的工程内的
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

注意逆向工具生成的注意事项

逆向生成的resultMap是帮我们做映射关系的
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
映射关系是映射到这个Stu的的pojo类
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
假设我们再次运行生成代码的类
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

在下面又追加了一个resultMap。id都是叫做BaseresultMap。也就是生成的代码是追加式的。如果多次生成了,要注意我们生成的xml文件里面多生成的resultMap。
在一个映射里面也就是RsultMap的id也保证唯一。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

编写Service层

在service工程下创建包
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1



阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
创建service类
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1


接口类里面,定义四个基本的增删盖茶的方法。

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

 

public interface StuService {
    public Stu getStuInfo(int id);

    public void saveStu();

    public void updateStu(int id);

    public void deleteStu(int id);
}

 


创建实现类的包
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
创建srevice的实现类
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
实现接口的类。(Alt+Enter回车)
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

实现接口的方法
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
注入stuMapper。下面有个红色的波浪线。提示无法注入,找不到StuMapper .这里暂时先不用管。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

我们现在用的Mapper是通用的mapper,它帮我们封装了很多方法。
输入stuMapper然后点,点就点出来很多方法。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
select相关的
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

controller创建

复制HelloController创建一个新的StuFooController
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1



阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
实现类加上事物的支持。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

maven install

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

启动api测试


阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
在这里报错了
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

没有找到注入的stuMapper
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

不是因为 这里的红线的问题。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

api的启动类里面默认会把com.imooc包下的类,子包的相关的类都会被扫描到。但是对于我们的mapper来讲的话,也是需要去扫描的。是让MyBatis去扫描的。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
所以我们需要再加上一个注释。@MapperScan
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
指明通用mapper类的位置。我们只需要复制包名
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

再次运行测试

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
这样就启动成功了。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
请求参数的id是放在路径上的。所以它是一种路径参数。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
在后端的话,我们需要做到一一的映射。这里的id需要做到请求参数传递。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
问号的方式传递参数 就不会报异常了。
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1
在数据库表内加一条数据
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

刷新前端页面,查询到了刚才条件的那条数据
阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

自己遇到的错误

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

改成8.0.17版本

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

 

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.17.jar:8.0.17]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.17.jar:8.0.17]

 

 

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.、

驱动的类名改成:com.mysql.cj.jdbc.Driver

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

 

报错:The server time zone value

把数据库链接字符串后面加上:&serverTimezone=UTC

阶段一-01.万丈高楼,地基首要-第2章 单体架构设计与准备工作-2-21 基于通用Mapper基于Rest编写api接口-1

最终数据库链接字符串:

jdbc:mysql://localhost:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=UTC

 

 

数据库链接地址修改

这个是代码生成器的项目里面用的数据库链接字符串
jdbc:mysql://localhost:3306/foodie-shop-dev?characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useUnicode=true&useSSL=false&serverTimezone=UTC

 



结束

相关文章:

  • 2021-11-20
  • 2022-03-07
  • 2021-06-05
  • 2022-03-08
  • 2021-12-04
  • 2021-08-23
  • 2022-01-20
  • 2021-09-21
猜你喜欢
  • 2021-09-09
  • 2021-05-26
  • 2022-02-03
  • 2022-02-24
  • 2022-02-14
  • 2021-10-12
  • 2021-10-22
相关资源
相似解决方案