新手 Spring boot学习写接口,简单的查询

新建项目

在这里插入图片描述

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

这样子就新建成了一个spring boot 的项目了
接着,我们需要配置数据库,不然运行的时候会报错,在application.yml中配置,我这边把后缀改为yml
简单的配置

# 端口号
server:
  port: 8807
spring:
  #通用的数据源配置
  # list_practice 是数据库名
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/list_practice?useUnicode=true&characterEncoding=utf-8&userSSL=true&serverTimezone=UTC
    username: root
    password:
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    # 配置在日志中打印出执行的SQL语句
    show-sql: true
    hibernate:

新建一个实体类,作为数据库某个表中的键值一一对应

package com.list.demo.login;

import javax.persistence.Entity;
import javax.persistence.Id;

// Entity表示是一个实体
@Entity
public class Login {
    @Id
    private int id;
    private String name;
    private String password;

    // 构造函数
    public Login(int id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

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

    public Login() {
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getPassword() {
        return password;
    }
}

新建一个接口

package com.list.demo.SQL;

import com.list.demo.login.Login;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
// 继承 JpaRepository 泛型
public interface LoginRepository extends JpaRepository<Login,Integer> {
    
    // 这个使用sql语句的,这里是没必要写的,因为springboot有这个的框架,自动生成的
    @Query(value = "select * from login",nativeQuery = true)
    List<Login> getLoginAll();

    @Query(value = "select * from login where login.name = :name and login.password = :password",nativeQuery = true)
    List<Login> getLogin(@Param("name") String name,
                         @Param("password") String password);

}

新建一个controller
@RequestMapping 是接口的地址,method 是请求方法

package com.list.demo.controller;


import com.list.demo.Result.ResultUtil;
import com.list.demo.SQL.LoginRepository;
import com.list.demo.login.Login;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.xml.ws.Response;
import java.util.List;

@RestController
// 这个是局部跨域的
@CrossOrigin(origins = "*")
public class LoginController {

    @Resource
    private LoginRepository loginRepository;
    
    // 使用sql语句
    @RequestMapping(value = "/v1/selectLogin",method = RequestMethod.GET)
    public Object getLogins(){
        List<Login> logins = loginRepository.getLoginAll();
        return ResultUtil.success(logins);
    }
    
    // 不使用,findAll就是查询所有的数据
    @RequestMapping(value = "/v1/new/selectLogin",method = RequestMethod.GET)
    public Object getNew_Logins(){
        List<Login> logins = loginRepository.findAll();
        return ResultUtil.success(logins);
    }

    // 用户登录
    @RequestMapping(value = "/v1/login",method = RequestMethod.POST)
    public Object getLogin(@RequestParam("name") String name,
                           @RequestParam("password") String password){
        List<Login> logins =loginRepository.getLogin(name,password);
        return ResultUtil.success(logins);
    }
}

封装一个返回的数据处理

package com.list.demo.Result;

public class Result<T> {
    private Integer code;
    private String msg;
    private T data;

    public Result() {
        super();
    }

    public Result(Integer code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
	
	// 具体数据还要根据你自己的想法去处理
    @Override
    public String toString() {
        return "data{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}
// 枚举
package com.list.demo.Result;

public enum ResultEnum {
    SUCCESS(10000,"成功"),
    ERROR(404,"失败");

    private Integer code;
    private String msg;

    ResultEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

package com.list.demo.Result;

public class ResultUtil {
    /**成功且带数据**/
    public static Result success(Object object){
        Result result = new Result();
        result.setCode(ResultEnum.SUCCESS.getCode());
        result.setMsg(ResultEnum.SUCCESS.getMsg());
        result.setData(object);
        return result;
    }

    /**成功但不带数据**/
    public static Result success(){
        return success(null);
    }
    /**失败**/
    public static Result error(Integer code,String msg){
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值