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 { ListgetAllUsers(); int addUser(User user); int updUserById(User user); User findUserById(@Param("id") int id); int delUserById(@Param("id") int id); }
这里需要注意的是
insert into user (name,password,sex,age,phone) values (#{name},#{password},#{sex},#{age},#{phone}) update user set name = #{name}, sex = #{sex}, phone = #{phone}, age = #{age} where id = #{id} delete from user where id = #{id}
每个方法基本是见名知意,我就不一一注释了。
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 ListgetAllUsers(){ 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 ListgetAllUsers(){ 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