SpringBoot框架代码的编写---以@RequestParam和@RequestBody为例

1、配置pom.xml

找到pom.xml文件,在依赖中添加分页助手和需要的json格式包。这里已经写好了,复制到pom.xml文件的dependencies中即可。

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>
<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
</dependency>

在这里插入图片描述

2、配置SpringBoot的全局配置文件application.properties

在resources文件夹下,找到application.properties全局配置文件,然后。根据自己的项目的实际情况,配置属于自己的应用名称、占用的端口号、数据库驱动、数据源名称、数据库连接地址、数据库的用户名和密码等。
在这里插入图片描述

# 应用名称
spring.application.name=demo
# 应用服务 WEB 访问端口
server.port=8888
# 数据库驱动:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 数据源名称
spring.datasource.name=defaultDataSource
# 数据库连接地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo?serverTimezone=UTC
# 数据库用户名&密码:
spring.datasource.username=root
spring.datasource.password=88888888

2、创建一个名为application.yml文件。

在resources文件夹中新建一个名为application.yml的文件,在这里配置一些必要的配置信息。
在这里插入图片描述
在这里插入图片描述
并把以下代码复制进去,然后修改部分配置为自己真实情况的配置:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jbbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&useSSL=true

    username: root
    password: 88888888
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.demo.entity
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

logging:
  file:
    path: D:/demo/

server:
  port: 8888

在这里插入图片描述

3、创建五个重要的文件夹

3.1、在com.example.demo中创建entity层:

在这里插入图片描述
在这里插入图片描述

3.2、在com.example.demo中创建controller层:

在这里插入图片描述
在这里插入图片描述

3.3、在com.example.demo中创建service层:

在这里插入图片描述
在这里插入图片描述

3.4、在com.example.demo中创建dao层:

在这里插入图片描述
在这里插入图片描述

3.5、在resources文件夹中创建mapper层:

在这里插入图片描述
在这里插入图片描述

3.6、最后项目的结构如图所示:

在这里插入图片描述

4、打开MYSQL并创建一个数据库和表

打开MYSQL,创建项目的中的demo数据库并创建一张login表。如果是自己有测试数据库和表,则无需按照我的demo流程走。

create database demo;
use demo;
create table login(
	username varchar(10) ,
    password varchar(100) 
);

在这里插入图片描述

5、五大文件夹的作用以及代码样例

5.1、entity

entity:实体层。这里写的是实体类的定义,数据表中的每个字段名都作为实体类中的一个成员变量,然后这里再实现每个成员变量的get和set的方法。

以demo数据库中的login表为例子,可知username和password的类型是varchar,那么就可以跟着这个类型编写它的代码样例了。在entity层创建一个Login.java文件:
在这里插入图片描述
在这里插入图片描述
定义用户名和密码的类型,并创建setter和getter:
Login.java

package com.example.demo.entity;

public class Login {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

5.2、controller

控制层。控制层中定义了提供给前端的接口的路径,前端使用本接口的方法(GET还是POST),以及需要传输的参数。前端发送来的请求首先传到 “控制器” 中,这里接受前端传来的请求,并将这个请求传到service层(调用了service层的接口)。

在controller文件夹下创建一个LoginController.java文件,并写入样例代码:
在这里插入图片描述
在这里插入图片描述

package com.example.demo.controller;

import com.example.demo.entity.Login;
import com.example.demo.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(value = "/Login")
public class LoginController {
    @Autowired
    private LoginService LoginService;

    @RequestMapping(value="/login1",method = RequestMethod.POST)
    private Login login1(@RequestParam String username, @RequestParam String password){
        return LoginService.login1(username,password);
    }

    @RequestMapping(value = "/login2",method = RequestMethod.POST)
    private Login login2(@RequestBody Login l2) {
        return LoginService.login2(l2.getUsername(),l2.getPassword());
    }
}

5.3、Service.IMPL

IMPL,implement的缩写。该层定义了相关service的接口,只是接口,实现接口的代码放在其上层文件夹Service中。接受从控制层controller中传递过来的请求,然后将请求传递给DAO层。

在Service文件夹下创建IMPL文件夹,并在IMPL文件夹下创建一个ILoginService.java文件,并写入样例代码:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package com.example.demo.service.impl;
import com.example.demo.entity.Login;

public interface ILoginService {
    Login login1(String username, String password);
    Login login2(String username, String password);
}

5.4、Service

服务层service接口的实现。在这里调用了DAO接口,将需要操作数据库的请求传递给DAO层。
在Service文件夹下创建一个LoginService.java文件,并写入样例代码:
在这里插入图片描述

在这里插入图片描述

package com.example.demo.service;

import com.example.demo.dao.LoginDao;
import com.example.demo.entity.Login;
import com.example.demo.service.impl.ILoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class LoginService implements ILoginService {
    @Autowired
    private final LoginDao LoginDao;

    public LoginService(LoginDao LoginDao) {
        this.LoginDao = LoginDao;
    }

    @Override
    public Login login1(String username, String password) {
        return LoginDao.login1(username,password);
    }

    @Override
    public Login login2(String username, String password) {
        return LoginDao.login2(username,password);
    }

}

5.5、Dao

数据库对后端服务的接口层。接受来自服务层service的请求,将请求传递给mapper。如果是@RequestParam方式的话,则@Param(“username”)中的username以及@Param(“password”)中的password对应的是mapper层中#{}中的参数。@RequestBody亦是如此。

在Dao文件夹下创建一个LoginDao.java文件,并写入样例代码:
在这里插入图片描述

在这里插入图片描述

package com.example.demo.dao;

import com.example.demo.entity.Login;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.beans.factory.annotation.Autowired;

@Repository
@Mapper
public interface LoginDao {
    @Autowired(required = false)
    Login login1(@Param("username") String username, @Param("password") String password);
    Login login2(@Param("username") String username, @Param("password") String password);
}

5.6、mapper

数据库操作层,这里写SQL语句,实现dao接口,接受dao接口传入的参数并执行SQL语句操作数据库。
在这里插入图片描述
在这里插入图片描述

在mapper文件夹下创建一个LoginMapper.xml文件,并写入样例代码:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.dao.LoginDao">
    <resultMap id="BaseResultMap" type="com.example.demo.entity.Login">
    </resultMap>

    <select id="login1" resultMap="BaseResultMap" parameterType="com.example.demo.entity.Login">
        SELECT * from login where username=#{username} and password=#{password}
    </select>

    <select id="login2" resultMap="BaseResultMap" parameterType="com.example.demo.entity.Login">
        SELECT * from login where username=#{username} and password=#{password}
    </select>
</mapper>

5.7、启动类DemoApplication

配置启动类DemoApplication,把dao层标注进去。样例代码如下:

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.demo.dao")
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

在这里插入图片描述

5.8、项目的所需修改文件如下图所示:

在这里插入图片描述

5.9、请求在各层的处理过程

在这里插入图片描述

6、效果展示

点击运行,如果代码按照流程走,会成功启动出现以下画面:
在这里插入图片描述
在这里插入图片描述

6.1、@RequestParam

如下图所示,如果前端调用的路径是http://127.0.0.1:8888/Login/login1,使用的是POST方法,参数有两个,分别是username和password。因为是@RequestParam,所以参数是通过url传输的,例如http://127.0.0.1:8088/Login/login1?username=zhangsan&password=88888888。
在这里插入图片描述
运行成功后,打开postman。选择post方式,在链接中写入http://127.0.0.1:8088/Login/login1,然后选择Params,填写key-value,然后点击send。
在这里插入图片描述
回看5.6,我们可以知道,以@RequestParam方式的接口login1,其语法是查询demo数据库的login表中用户名和密码是某某的所有信息。因为我填写的是login表存在的正确的用户名和密码,所以能在postman看到正确的返回结果。
在这里插入图片描述
在IDEA的后台日志也可以看到查询结果:
在这里插入图片描述

6.2、@requestBody

@requestBody的参数是通过请求体传输的,他是在http包的body层传输,格式是JSON格式。以@requestBoby这种接口方式的好处就是是在url中看不到参数的值,因而更安全。
如下图所示,如果前端调用的路径是http://127.0.0.1:8888/Login/login2,使用的是POST方法,参数有两个,分别是username和password,以json的方式传值。
在这里插入图片描述
运行成功后,打开postman。选择post方式,在链接中写入http://127.0.0.1:8088/Login/login2,然后选择Body下的raw(以json的方式),填写key-value的json格式,然后点击send。
在这里插入图片描述
回看5.6,我们可以知道,以@RequestBody方式的接口login2,其语法是查询demo数据库的login表中用户名和密码是某某的所有信息。因为我填写的是login表存在的正确的用户名和密码,所以能在postman看到正确的返回结果。
在这里插入图片描述
在IDEA的后台日志也可以看到查询结果:
在这里插入图片描述
好了,今天的分享就到此为止。
分享不易,建议一键三连再走。
在这里插入图片描述

  • 22
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会点东西的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值