Springboot 入门
SpringBoot–“春天的靴子”给java web开发带来了春天,穿上了加速的靴子
2小时急速上手SpringBoot(儿童版)
修改IDEA的Maven镜像
公共代理库-阿里云帮助中心
打开如图所示的文件
在修改文件前,请务必备份原文件,以避免不要要的损失
把原<mirror></mirror>
标签中的内容替换为以下内容即可
1 2 3 4 5 6
| <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
|
如遇到没有权限的问题,把修改后的文件另存到桌面,然后再从桌面复制回原来的地方即可(复制的过程中会提示需要提供管理员权限)
单元测试的使用
项目结构
方法一
Hello.java文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package com.hokin.springbootlearn;
public class Hello {
public static void say() { System.out.println("hello"); } }
|
SpringbootLearnApplicationTests.java文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package com.hokin.springbootlearn;
import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest class SpringbootLearnApplicationTests {
@Test void contextLoads() { Hello.say(); }
}
|
点击@Test旁边的三角形按钮即可开始进行单元测试
方法二
Hello.java文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.hokin.springbootlearn;
import org.springframework.stereotype.Component;
@Component public class Hello {
public void say() { System.out.println("hello"); } }
|
SpringbootLearnApplicationTests.java文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.hokin.springbootlearn;
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest class SpringbootLearnApplicationTests {
@Autowired Hello hello; @Test void contextLoads() { hello.say(); }
}
|
测试结果
Controller、Service、dao、pojo四大包(功能)
web通过http请求处理给到controller(相当于门,os:web你是过来增加人员的,好,我带你去找那个业务。于是找到了service)service(os:你要增加一个人啊,然后service到dao找了,然后找到了增加是这个方法,然后想增加一个人?这个人在哪?然后就找到了pojo)
连接数据库
项目结构
数据库结构
创建数据库及表代码如下
1 2 3 4 5 6 7 8
| create schema imau_learn; create table user ( username varchar(32) not null comment '用户名', password varchar(32) not null comment '密码', constraint user_pk primary key (username) );
|
操作步骤
在pom.xml中添加spring-boot-starter-jdbc和mysql-connector-j依赖(复制代码后重新载入pom.xml即可),可以在文章结尾的Maven依赖官网仓库搜索复制代码,也可复制以下代码
spring-boot-starter-jdbc依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
|
mysql-connector-j依赖
1 2 3 4 5
| <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>
|
重新载入pom.xml
重命名配置文件为application.yml并输入以下信息:
1 2 3 4 5 6
| spring: datasource: username: root password: Guistar_ url: jdbc:mysql://localhost:3306/imau_learn driver-class-name: com.mysql.cj.jdbc.Driver
|
运行主程序中的Application文件即可查看连接是否正常(无报错即正常)
添加mybatis-plus-boot-starter依赖
注意:springboot3及以上的需要用3.5.3.1版本,否则会无法加载dao层的bean
1 2 3 4 5 6 7
| <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency>
|
重载Maven
项目结构
UserPojo文件(类)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package com.hokin.springbootlearn.pojo;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;
@Data @AllArgsConstructor @NoArgsConstructor @TableName(value = "user") public class UserPojo {
@TableId(value = "username", type = IdType.NONE) private String username;
@TableField(value = "password") private String password; }
|
UserDao文件(接口)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.hokin.springbootlearn.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hokin.springbootlearn.pojo.UserPojo; import org.apache.ibatis.annotations.Mapper;
@Mapper public interface UserDao extends BaseMapper<UserPojo> {
}
|
UserServiceImpl文件(类)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| package com.hokin.springbootlearn.service;
import com.hokin.springbootlearn.dao.UserDao; import com.hokin.springbootlearn.pojo.UserPojo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
@Service public class UserServiceImpl {
@Autowired UserDao userDao;
public void addUser(String username, String password) { userDao.insert(new UserPojo(username, password)); }
}
|
Test测试文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package com.hokin.springbootlearn;
import com.hokin.springbootlearn.service.UserServiceImpl; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest class SpringbootLearnApplicationTests {
@Autowired Hello hello;
@Autowired UserServiceImpl userServiceimpl; @Test void contextLoads() { hello.say(); userServiceimpl.addUser("aaa", "123456"); }
}
|
测试结果
可以看到已经成功把数据添加到数据库中去了!
开发接口并测试(初步)
项目结构
各文件代码
UserController文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| package com.hokin.springbootlearn.controller;
import com.hokin.springbootlearn.service.UserServiceImpl; import com.hokin.springbootlearn.utils.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;
@RestController public class UserController {
@Autowired UserServiceImpl userService;
@RequestMapping(value = "/addUser", method = RequestMethod.POST) public String addUser(@RequestParam("username") String username, @RequestParam("password") String password) { userService.addUser(username, password); return Result.okGetString("添加成功"); }
@RequestMapping(value = "/deleteUser", method = RequestMethod.DELETE) public String delUser(@RequestParam("username") String username) { userService.delUser(username); return Result.okGetString("删除成功"); }
@RequestMapping(value = "/updateUser", method = RequestMethod.PUT) public String updateUser(@RequestParam("username") String username, @RequestParam("password") String password) { userService.updateUserByName(username, password); return Result.okGetString("修改成功"); }
@RequestMapping(value = "/findUser/{username}", method = RequestMethod.GET) public String findUser(@PathVariable("username") String username) { Object list = userService.findUserByNameFuzzy(username); return Result.okGetStringByData("查询成功", list); } }
|
UserServiceImpl文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| package com.hokin.springbootlearn.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hokin.springbootlearn.dao.UserDao; import com.hokin.springbootlearn.pojo.UserPojo; import org.apache.catalina.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;
import java.util.List;
@Service public class UserServiceImpl {
@Autowired UserDao userDao;
public void addUser(String username, String password) { userDao.insert(new UserPojo(username, password)); }
public void delUser(String username) { userDao.deleteById(username); }
public void delUserByName(String username) { userDao.delete(new QueryWrapper<UserPojo>().like("username", username)); }
public void findUserByName(String username) { UserPojo pojo = userDao.selectOne(new QueryWrapper<UserPojo>().eq("username", username)); System.out.println(pojo); }
public Object findUserByNameFuzzy(String username) { List<UserPojo> pojo = userDao.selectList(new QueryWrapper<UserPojo>().like("username", username)); pojo.forEach(item -> { System.out.println(item); });
return pojo; }
public void updateUserByName(String username, String password) { UserPojo pojo = userDao.selectById(username); pojo.setPassword(password); userDao.update(pojo, new QueryWrapper<UserPojo>().eq("username", username)); } }
|
UserDao文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.hokin.springbootlearn.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hokin.springbootlearn.pojo.UserPojo; import org.apache.ibatis.annotations.Mapper;
@Mapper public interface UserDao extends BaseMapper<UserPojo> {
}
|
UserPojo文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package com.hokin.springbootlearn.pojo;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;
@Data @AllArgsConstructor @NoArgsConstructor @TableName(value = "user") public class UserPojo {
@TableId(value = "username", type = IdType.NONE) private String username;
@TableField(value = "password") private String password; }
|
Result文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.hokin.springbootlearn.utils;
import com.alibaba.fastjson2.JSONObject; import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap; import java.util.Map;
public class Result {
public static String okGetString(String message) { Map<String, Object> map = new HashMap<>(); map.put("code", 200); map.put("message", message); String s = JSONObject.toJSONString(map); return s; }
public static String okGetStringByData(String message, Object data) { Map<String, Object> map = new HashMap<>(); map.put("code", 200); map.put("message", message); map.put("data", data); String s = JSONObject.toJSONString(map); return s; } }
|
测试步骤
把以上文件都完善好后就可以利用Apipost进行接口测试了
Apipost官网
下载Apipost并安装打开
运行主App文件,主App文件不用修改什么,直接运行即可
打开Apipost
以下为测试添加用户接口示例:
实时响应处能看到消息即为可用接口,可以看到数据库已经发生了变化了
以下为测试查询用户的接口示例:
测试成功!
其他
Maven依赖官网仓库
phpStudy(小皮面板) - 让天下没有难配的服务器环境!