tips: 默认是application.properties,自己再新建一个application.yml即可
server:
port: 8088 #自己喜欢哪个端口用哪个
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2b8 #改成自己的数据库
username: root # 改成自己的mysql用户
password: root # 改成自己的密码
mybatis:
mapper-locations: classpath:mapper/*.xml
tips:注意包的位置,别放错了。创建包:右键点击new package即可。
在包entity下,创建User类,然后提供与数据库对应的字段作为属性,我这边使用lombok提供的注解(对应的getter和setter以及有参无参构造器和toString方法),其实就是传统的javabean。
package com.robin.springbootscaffold.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private int id;
private String name;
private String password;
private String sex;
private int age;
private String phone;
}
这里因为是入门嘛,所以就直接对应一张表的crud,增删改查,以及一个列表查询,然后左侧的小鸟是装了一个mybatis的插件(它可以帮助提示,你的每个mapper接口和mapper.xml的映射关系)。
package com.robin.springbootscaffold.mapper;
import com.robin.springbootscaffold.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> getAllUsers();
int addUser(User user);
int updUserById(User user);
User findUserById(@Param("id") int id);
int delUserById(@Param("id") int id);
}
这里需要注意的是
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.robin.springbootscaffold.mapper.UserMapper">
<select id="getAllUsers" resultType="com.robin.springbootscaffold.entity.User">
select * from user
select>
<insert id="addUser" >
insert into user
(name,password,sex,age,phone)
values (#{name},#{password},#{sex},#{age},#{phone})
insert>
<update id="updUserById">
update user
set name = #{name},
sex = #{sex},
phone = #{phone},
age = #{age}
where id = #{id}
update>
<select id="findUserById" resultType="com.robin.springbootscaffold.entity.User">
select * from user where id = #{id}
select>
<delete id="delUserById">
delete from user where id = #{id}
delete>
mapper>
每个方法基本是见名知意,我就不一一注释了。
package com.robin.springbootscaffold.service;
import com.robin.springbootscaffold.entity.User;
import com.robin.springbootscaffold.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers(){
return userMapper.getAllUsers();
}
public int addUser(User user){
return userMapper.addUser(user);
}
public int updUserById(User user){
return userMapper.updUserById(user);
}
public User findUserById(int id){
return userMapper.findUserById(id);
}
public int delUserById(int id){
return userMapper.delUserById(id);
}
}
package com.robin.springbootscaffold.controller;
import com.robin.springbootscaffold.entity.User;
import com.robin.springbootscaffold.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public List<User> getAllUsers(){
return userService.getAllUsers();
}
@PostMapping("/add")
public int addUser(@RequestBody User user){
return userService.addUser(user);
}
@PutMapping("/upd")
public int updUserById(@RequestBody User user){
return userService.updUserById(user);
}
@GetMapping("/find/{id}")
public User findUserById(@PathVariable("id") int id){
return userService.findUserById(id);
}
@DeleteMapping("/delete/{id}")
public int delUserById(@PathVariable("id") int id){
return userService.delUserById(id);
}
}
首先解释一下 @RestController 这个注解,可以将你的每个接口的返回值转换为一个json,@RequestMapping 用于指定接口的映射规则,这个的话,接着往下看就明白啦。
然后 @GetMapping @DeleteMapping @PutMapping @PostMapping 都是 @RequestMapping 的衍生注解,分别对应不同的请求方式,然后有一些细节是不同的,这里不做过多的描述。
如果 @RequestBody @PathVariable 这两个注解不懂的话,可以看我的这篇文章 springbootWeb常用注解使用
启动项目,然后使用postman测试接口(如果没使用过postman的话,去了解一下)
注意观察每个接口的请求方式,以及请求的参数和请求体
因为我们controller中使用的是@RequestBody注解 ,所以使用postman发送请求的话需要选择body->row,然后以json的数据格式发送。
路径变量,就是在/后面多加一个变量,用于保存一些信息,然后使用@PathVarible注解就可以获取到对应的变量的值。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '姓名',
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '密码',
`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '性别',
`age` int(0) NULL DEFAULT NULL COMMENT '年龄',
`phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电话',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '张三', '123456', '男', 25, '18888889999');
INSERT INTO `user` VALUES (3, 'robin', '123456', '男', 22, '14424567789');
SET FOREIGN_KEY_CHECKS = 1;
数据库比较简单,考虑到小白,我直接贴sql代码了(数据库名为springboot,表名为user)。
这个demo的完整代码,我已经上传到了百度网盘需要的直接下载就行
链接: https://pan.baidu.com/s/1gghcUrajoMDpAQbEnfOOuw 提取码: 41xs
后续看情况,可以做一下前后端分离的小demo