SpringBoot项目启动及接口请求与返回 <自导自演SpringBoot项目第二天>

提示:今天的内容在上一次的基础上继续开发,并采用前后端完全分离的方式发送请求,和postman测试请求。


提示:今天演示的项目是我重新搭建的,项目环境和上次演示的完全相同,开发照步骤来就好,不会有任何影响。以下是本篇文章正文内容,下面案例可供参考

一、创建Controller请求及数据返回

1、在项目路径 src/jmain/java/com/moyang/project 的路径下新建一个包名为:controller,和启动类同级;(com/moyang/project) 这个路径名称和我的可以不同,但是结构要保持一致;

在这里插入图片描述
2、controller包创建好之后,在包下面创建一个相应模块的controller类。
在这里插入图片描述
3、给控制器加上注解,并新建一个方法测试请求,以用户模块为例:userInfoController
在这里插入图片描述
4、测试结果,这里我用postman进行测试
在这里插入图片描述
接受到返回的信息说明接口是通的。
注:开发一定要懂知道的喝茶小技巧,创建的接口一定要先测一下能否正常请求并成功返回之后,在进行逻辑代码的编写,如果创建完接口不进行测试直接劈里啪啦一通乱敲,最后找bug都要找几杯茶的工夫(如果你是大神或者不爱喝茶,那就当我是在放屁)

@RestController
@RequestMapping("/project/userInfo")
public class UserInfoController {
    @PostMapping("/userLogin")
    public Map userLogin(@RequestBody Map param){
        param.put("message","请求成功");
        return param;
    }
}

二、创建统一结果集返回数据

上面接收到了服务端的请求,并成功返回了参数,但实际开发的过程中服务段需要接受的参数要包含code状态码、message请求信息、resultDate返回结果。因为是前后端分离的项目采用的是ajax的方式请求,请求的参数和返回的参数通常都是Json格式,这时候用map就不够灵活了,所以有了将结果集封装成一个对象,把这个对象以Json的方式返回给前端;
茶不急喝,上代码先
1、在project包下面创建一个common包,这个包用于存放公共的资源,在这个包下新建一个JsonResult类(名字别太随意),创建方式与controller一致,这里就不上图了

@Data   				// Lombok自带注解,用于生成get、set方法
@AllArgsConstructor 	// Lombok自带注解,用于生成全参构造
@NoArgsConstructor		// Lombok自带注解,用于生成无参构造
public class JsonResult {
	
    // 返回状态
    private Integer code;

    // 请求信息
    private String message;

    // 返回结果
    private Object resultData;

	// 定义一个请求成功的方法,用于请求成功后返回给服务服务端
	public static JsonResult success(Integer code,String message,Object resultData){
        return new JsonResult(code,message,resultData);
    }

	// 定义一个请求失败的方法,用于请求失败或捕获到异常之后返回给服务服务端
	public static JsonResult error(Integer code,String message,Object resultData){
        return new JsonResult(code,message,resultData);
    }

}

2、修改userInfoController的userLogin方法

@PostMapping("/userLogin")
    public JsonResult userLogin(@RequestBody Map param){
        JsonResult jsonResult= null;
        try {
            jsonResult = null;
            param.put("param1","请求的参数");
            param.put("返回Bean",new UserInfo("admin","123456","aihechadexiaochoukaifa@qq.com"));
            //这里的userInfo在实际开发中不要这样返回,这样写我是为了演示效果
            jsonResult=JsonResult.success(200,"服务请求成",param);
        } catch (Exception e) {
            // 这里为了演示我把 Exception 作为resultData返回出去,实际开发不要返回异常信息,原因以后再说
            jsonResult=JsonResult.error(300,"可能出错的原因",e);
        }
        return jsonResult;
    }

发送请求测试结果
在这里插入图片描述

以上操作就完成了对请求的接收和响应,对于JsonResult返回的方法可以根据自己的需求增加想要的方法,后续会有对异常返回统一的处理,今天先完成数据库的连接和mybatis-plus自动生成代码;

三、配置数据源连接数据库

在src/main/resource目录下边有一个application.properties配置文件。
在这里插入图片描述打开这个配置文件,将数据库的连接配上。

# 设置端口,默认8080,改动范围在8000-9999
server.port=8888
# 数据库连接url,?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8 这一段是设置时区的
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8
# 数据库连接驱动 
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=数据库用户名
spring.datasource.password=数据库密码

四、使用mybatis-plus自动生成代码完成数据查询

mybatis-plus官网:https://www.baomidou.com/ 在使用后代码自动生成器之前先看一下官方文档,知道新版与进版本的差异和一些可能出现的错误。

1、在pom.xml文件引入mybatis-plus依赖
在这里插入图片描述
引入这三个依赖到pom文件的dependencies节点下

<!--配合使用 ST-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3.1</version>
        </dependency>
        <!-- 模板引擎 -->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.0</version>
        </dependency>
        <!--配合使用 ST-->

2、在测试类中创建代码生成器的执行方法,测试类名自己能看懂就行
在这里插入图片描述

@Test
    void codeAutomatikNew(){
        String projectPath=System.getProperty("user.dir");//获取项目路径
        //(2)创建生产器
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/数据库名字?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8", "数据库用户", "数据库用户密码")
                // 全局配置 GlobalConfig
                .globalConfig(builder -> {
                    builder.author("moyang")   // 设置作者名
                            .enableSwagger() // 开启 swagger 模式,默认值false
                            .dateType(DateType.ONLY_DATE)  //定义生成的实体类中日期类型
                            // 指定输出目录,注意可根据包修改
                            .outputDir(projectPath+"/src/main/java");
                })// 包配置 PackageConfig
                .packageConfig(builder -> {
                    builder.parent("com.moyang") // 设置父包名
                            .moduleName("project") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, "D:/Demo/java/financial-project/src/main/java/com/moyang/project/mapper/mapping")); // 设置mapperXml生成路径
                })
                .strategyConfig(builder -> {
                    builder.addInclude("t_user_info","t_stock_money_info","t_stock_money_sum_info") // 设置需要生成的表名,多张以逗号隔开
                            .addTablePrefix("t_"); // 设置过滤表前缀
                })
                .templateEngine(null) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();
    }

运行这个方法src/main/java/com/xxx/xxx/会创建下面这几个包
在这里插入图片描述
当这些成功生成的时候就就说明代码生成没问题了。

3、修改UserInfoController,测一下能否正常访问数据库

@RestController
@RequestMapping("/project/userInfo")
public class UserInfoController {

	/* 1、类下面通过注解引入UserInfoServiceImpl */
    @Autowired
    private UserInfoServiceImpl userInfoService;

   	/* 2、 增加获取用户的方法 */
    @PostMapping("/getUserInfo")
    public JsonResult getUserInfo(@RequestBody Map param){
        JsonResult jsonResult= null;
        try {
        	/* 3、 用QueryWrapper 传递参数*/
            QueryWrapper queryWrapper=new QueryWrapper();
            queryWrapper.allEq(param,false);
            UserInfo userBean = userInfoService.getOne(queryWrapper);
            /* 4、将 查询到的用户信息userBean 返回个前端 */
            jsonResult=JsonResult.success(200,"服务请求成",userBean);
        } catch (Exception e) {
            jsonResult=JsonResult.error(300,"可能出错的原因",e);
        }
        return jsonResult;
    }
}

4、 postman发送请求测试接口是否成功
在这里插入图片描述
当结果成功返回就说说明没问题了

总结

提示:由于代码是自动生成的有几个细节点需要注意
1、在启动类上加上扫描mapper文件的注解@MapperScan(“com.moyang.project.mapper”)
2、在Service实现类上加上@Service,这两个注解一个都不能少
一套操作下来项目的架构就搭建的差不多了,后面开始业务逻辑的开发,开发中会用到世界开发中常用的技术框架,以及需要注意的细节点。是时候泡杯茶解解渴了。

泡茶之前记得提交代码到远程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值