SpringBoot开发接口

初始化

新建项目

(1)使用 IDEA 的过程,新建Project,左侧选 Spring Initializr,点Next

(2)选 8 版本,点Next

(3)左侧选择Web,勾选上Spring Web,点Next,起名之后点Finish,项目创建完毕

写配置

找到src - main - resources - application.properties文件,重命名将后缀改为 application.yml,写如下配置:

server:
port: 8080
spring:
# 数据库连接配置
datasource:
driver-class-name: com.mysql.jdbc.Driver
# 127.0.0.1:3306/后的spring_test为数据库名,修改为自己的数据库名
url: jdbc:mysql://127.0.0.1:3306/spring_test?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
# 修改为自己数据库的用户名和密码
username: root
password: 123456 # mybatis相关配置
mybatis:
# mybatis配置文件
mapper-locations: classpath:mapper/*.xml

数据库

数据库为:spring_test ,新建表person ,数据如下

gender为性别字段,0为女,1为男

id name gender hobby
1 张三 1 踢足球,跑步
2 李四 0 追剧,做美甲
3 王五 1 开黑,吃烧烤
4 赵六 0 刷段子,做美食

初始化完成,写代码

一、model

src/main/java/com.example 下新建 model 包,model下新建类,跟数据库字段保持一致,如:

Person.java

package com.example.model;

public class Person {

    private int id;
private String name;
private int gender; // 0为女,1为男
private String hobby; public Person() {
} public Person(int id, String name, int gender, String hobby) {
this.id = id;
this.name = name;
this.gender = gender;
this.hobby = hobby;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getGender() {
return gender;
} public void setGender(int gender) {
this.gender = gender;
} public String getHobby() {
return hobby;
} public void setHobby(String hobby) {
this.hobby = hobby;
} @Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", gender=" + gender +
", hobby='" + hobby + '\'' +
'}';
}
}

二、mapper

src/main/java/com.example 下新建 mapper 包。mapper 包是处理动作,操作,更新/删除/插入/查询等,在包下新建一个 interface 接口,如

PersonMapper.java

package com.example.mapper;

import com.example.model.Person;

import java.util.List;

@Mapper	// 加注解,必须
public interface PersonMapper {
List<Person> findAll();
}

三、mapper.xml

src/main/resources 下新建mapper 文件夹,这里写具体的sql语句,新建file,如

PersonMapper.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"> <!-- namespace映射java / mapper接口的位置 -->
<mapper namespace="com.example.mapper.PersonMapper">
<!-- id为java / mapper / PersonMapper.java下的方法名;resultType这里为实体类,写实体类Person的位置 -->
<select id="findAll" resultType="com.example.model.Person">
SELECT * FROM person
</select>
</mapper>

如果第2行的路径http://mybatis.org/dtd/mybatis-3-mapper.dtd爆红,说明mybatis没引进来,在pom.xml中引入即可。

引入代码如下

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>

四、service

src/main/java/com.example 下新建 service 包,这是业务逻辑层,对数据过滤、处理等等;这里我不写详细的业务逻辑,只是模拟一下service层的使用,如

PersonService.java

package com.example.service;

import com.example.mapper.PersonMapper;
import com.example.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class PersonService {
// 这个Service的操作为从PersonMapper中接过findAll()数据在return出去
@Autowired
private PersonMapper personMapper; public List<Person> findAll(){
return personMapper.findAll();
}
}

五、controller

src/main/java/com.example 下新建 controller 包,controller 层为最终前端访问的接口实现层,在这里进行增删改查的 RESTful 接口的编写,如

PersonController.java

package com.example.controller;

import com.example.model.Person;
import com.example.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @CrossOrigin(origins = "*") // 表示该类方法允许跨域
@RestController
public class PersonController { @Autowired // 这里拿到处理完业务逻辑的PersonService的数据
private PersonService personService; // 获取所有人的信息
@RequestMapping("getPerson")
public List<Person> getPerson(){
return personService.findAll();
}
}

项目目录

展示的为 src/java/main 下的目录及文件

├─java

│ └─com

│ └─example

│ │ Application.java ------------------- 程序入口,main方法在此编写

│ │

│ ├─controller --------------------------- 控制层,用来实现接口的地方

│ │ PersonController.java

│ │

│ ├─mapper ----------------------------- 动作,操作,更新/删除/插入/查询等

│ │ PersonMapper.java

│ │

│ ├─model ------------------------------- 实体类层,又叫 bean | entity | pojo

│ │ Person.java

│ │

│ └─service ------------------------------ 业务逻辑层,对数据过滤、处理等等

│ PersonService.java



└─resources

│ application.yml -------------------------- SpringBoot 配置文件



├─mapper ------------------------------------ 写具体sql语句的地方

│ PersonMapper.xml



└─ ......

访问成功

到此,浏览器已经出现数据

SpringBoot开发简单接口流程的更多相关文章

  1. 使用Flask开发简单接口(1)--GET请求接口

    前言 很多想学习接口测试的同学,可能在最开始的时候,常常会因没有可以练习的项目而苦恼,毕竟网上可以练习的接口项目不多,有些可能太简单了,有些可能又太复杂了,或者是网上一些免费接口请求次数有限制,最终导 ...

  2. 使用Flask开发简单接口(2)--POST请求接口

    今天我们继续学习如何使用Flask开发POST接口:用户注册接口和用户登录接口. request接收参数 当我们在页面发出一个POST请求,请求传到服务器时,需要如何拿到当前请求的数据呢?在Flask ...

  3. 使用Flask开发简单接口(4)--借助Redis实现token验证

    前言 在之前我们已开发了几个接口,并且可以正常使用,那么今天我们将继续完善一下.我们注意到之前的接口,都是不需要进行任何验证就可以使用的,其实我们可以使用 token ,比如设置在修改或删除用户信息的 ...

  4. 使用Flask开发简单接口(5)--数据加密处理

    前言 在之前开发的接口中,我们设计把用户信息存储到数据库时,没有对数据进行加密处理,为了提高下安全性,我们今天就学习下,如何对用户数据进行加密加盐处理. MD5加密加盐 MD5加密 MD5是常用的一种 ...

  5. drupal 开发简单站点流程

    友情推广:Uminicmf 一个基于thinkphp开发的OA框架.http://blog.csdn.net/youmypig/article/details/51727713 drupal 简单站点 ...

  6. 使用Django开发简单接口:文章增删改查

    目录 1.一些准备工作 安装django 创建django项目 创建博客应用(app) 2.models.py 3.django admin 登录 创建超级用户 4.修改urls.py 5.新增文章接 ...

  7. 使用Flask开发简单接口(3)--引入MySQL

    前言 前面的两篇文章中,我们已经学习了通过Flask开发GET和POST请求接口,但一直没有实现操作数据库,那么我们今天的目的,就是学习如何将MySQL数据库运用到当前的接口项目中. 本人环境:Pyt ...

  8. 使用Flask开发简单接口

    作为测试人员,在工作或者学习的过程中,有时会没有可以调用的现成的接口,导致我们的代码没法调试跑通的情况. 这时,我们使用python中的web框架Flask就可以很方便的编写简单的接口,用于调用或调试 ...

  9. 在线支付接口之PHP支付宝接口开发简单介绍

    php100:92:在线支付接口之PHP支付宝接口开发 支付接口一般是第三方提供的代收款.付款的平台,可以通过支付接口帮助企业或个人利用一切可以使用的支付方式.常见支付平台:支付宝.快钱.云网支付.财 ...

  10. Java开发笔记(五十八)简单接口及其实现

    前面介绍了抽象方法及抽象类的用法,看似解决了不确定行为的方法定义,既然叫唤动作允许声明为抽象方法,那么飞翔.游泳也能声明为抽象方法,并且鸡类涵盖的物种不够多,最好把这些行为动作扩展到鸟类这个群体,于是 ...

随机推荐

  1. 网络调试助手|网络调试助手(CM精装版) V4.1.0 绿色版

    http://www.winwin7.com/soft/16987.html#xiazai 网络调试助手软件功能 1.支持UDP,TCP协议2.支持单播/广播,集成TCP服务器和客户端3.支持ASCI ...

  2. 统计数据异常值的处理——R语言

    在数据分析工作中,面对收集而来的数据,数据清洗是首要环节.异常值(outlier)是数据清洗的重要环节,异常值可能直接会导致后面的数据分析.建模工作出现偏差,下面就给大家介绍一下如何处理数据中的异常值 ...

  3. 你绝对没想到的GPT的底层意义

    学会说话才是完整的人 有种说法在民间流传已久,在某些非洲部落中,孩子出生后往往会被称作"小人"或者"半个人",直到他们能够进行语言的交流才被认为是完全的人.这是 ...

  4. pyhon之编译成exe

    1安装pyinstaller pip install pyinstaller 2 编译 pyinstaller -F -w game.py  (-F表示打包单个文件,-w是为了打开exe时候不弹出黑框 ...

  5. 【Zookeeper】(一)概述与内部原理

    Zookeeper概述 1 概述 Zookeeper是一个开源的.分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式的角度来看,是一个基于观察者模式设计的分布式服务管 ...

  6. Docker中Nginx搭建以及配置

    docker nginx搭建 1 docker pull nginx docker pull nginx 2 启动nginx docker run --name nginx -p 80:80 -d n ...

  7. Python用哈希算法查找相似图片(包括不同分辨率,不同大小,不同格式的图片)

    # -*- coding: utf-8 -*- ''' Python用哈希算法查找相似图片并放入[_df]的文件夹中 相似图片包括不同分辨率,不同大小,不同格式,只要图片相似就会算重复文件 安装cv2 ...

  8. API网关:开源Apinto网关-上游服务篇(二)

    功能介绍 服务发现是一种分布式系统中的关键技术,它能够帮助应用程序动态地发现和访问依赖的服务实例,解决了服务实例分布在不同节点上的问题.通过服务发现,应用程序可以快速找到需要调用的服务实例的位置和元数 ...

  9. Python变量的数据类型

    主要内容 jupyter notebook的用法 变量 跟vi/vim的编辑模式很像 # 声明的三种格式 # 格式1 s1 = "我爱王晓静" # 格式2 s2 = s1 = &q ...

  10. DFS(深度优先搜索) 总是需要重置 visited 的状态吗?

    问题来自 P1902 刺杀大使,在最初的实现中 DFS 中一段代码如下: visited[x2][y2] = true; flag = dfs(v, x2, y2); visited[x2][y2] ...