简介
本文介绍了如何使用idea搭建一个简易springboot后端项目,该项目可以接受前端http请求,经由服务端并访问数据库,最后返回查询结果。该简易项目从零开始搭建,涵盖controller/service/dao层,简单易懂易上手,并提供代码源文件,模仿查找一个用户id为1的用户,返回其详细信息。
项目作用
帮助初学者快速打通一个从前端访问到后端数据库访问的流程,打通项目环境问题。基于该简易项目,可以再自由地拓展任何其他进阶内容。
展示
1.目录结构
2.项目测试结果
搭建过程
准备工作
1.必备软件:idea、 jdk、 mysql
idea用的是2020.1版本,其他版本也可以
jdk使用的是1.8版本;
mysql若未安装,可以搜索安装教程,几分钟即可安装完,设置的密码需要记住。
博主用的版本是5.7.44版本,本项目其他版本也均可用。
2.可选软件:postman 或者 chrome浏览器的Restlet Client插件
博主用的是后者,用于模拟前端http请求
新建idea工程
1.选择File – New Project - Spring Initializr
2.修改Type如下,Java Version如果有8的版本就选8
3.选择Web – Spring Web – Next – 最后项目名称随缘设定,Finish即可
4.检查idea中的JDK版本设置
File – Project Structure 看SDK是否都为8,如果不是,对照改成如下,避免运行过程中报错。
idea连接数据库
说明:这个步骤是为了我们能清晰显现看到数据库表内容。也可以自行连接使用navicat软件代替该步骤。
找到idea右上角有数据库/Database侧边栏,打开侧边栏点击加号->数据源,选择MySQL
填入用户名,默认root,密码填写安装mysql时预设的密码。
Database和URL可以参考以下设置
Database:mmall_learning
URL:jdbc:mysql://localhost:3306/mmall_learning
最后点击Test Connection连接测试。如果有提示下载connector,则点击下载;如果有time zone相关提示,则参照接下来的图片设置即可,最后点击Test Connection显示绿勾说明连接成功。
关于timezone的提示,按如下设置,找到Advanced – serverTimezone,设置为 Asia/Shanghai
运行sql语句
1.使用idea运行下面2个步骤。选择如下图标打开数据库查询控制台,输入SQL语句分别执行创建库和表,并插入数据。
2.创建数据库
CREATE DATABASE mmall_learning;
3.创建用户表
CREATE TABLE `mmall_user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户表id',
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(50) NOT NULL COMMENT '用户密码,MD5加密',
`email` varchar(50) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
`question` varchar(100) DEFAULT NULL COMMENT '找回密码问题',
`answer` varchar(100) DEFAULT NULL COMMENT '找回密码答案',
`role` int(4) NOT NULL COMMENT '角色0-管理员,1-普通用户',
`create_time` datetime NOT NULL COMMENT '创建时间',
`update_time` datetime NOT NULL COMMENT '最后一次更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `user_name_unique` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
4.插入数据
INSERT INTO `mmall_user` VALUES ('1', 'admin', '427338237BD929443EC5D48E24FD2B1A', 'admin@mmall.com', '13800138000', '问题', '答案', '1', '2022-11-06 16:56:45', '2023-04-04 19:27:36'), ('13', 'keety', '08E9A6EA287E70E7E3F7C982BF7923AC', 'tt@mmall.com', '13800138000', '问题', '答案', '0', '2022-11-19 22:19:25', '2023-11-19 22:19:25'), ('17', 'rosen', '095AC193FE2212EEC7A93E8FEFF11902', 'mm@mmall.com', '13800138000', '问题', '答案', '0', '2022-03-17 10:51:33', '2023-04-09 23:13:26'), ('21', 'soonerbetter', 'DE6D76FE7C40D5A1A8F04213F2BEFBEE', 'test@mmall.com', '13800138000', '105204', '105204', '0', '2022-04-13 21:26:22', '2023-04-13 21:26:22');
最后记得提交
COMMIT;
代码
pom依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--连接数据库-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
</project>
controller层,创建UserController类
@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/get_user", method = RequestMethod.GET)
public ResponseEntity<User> getUser(@RequestParam(value = "id") String userId) {
User user = userService.getUser(userId);
return ResponseEntity.status(HttpStatus.OK).body(user);
}
}
service层,创建UserService类
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User getUser(String userId) {
User user = userMapper.findById(userId);
return user;
}
}
dao层,创建UserMapper接口
@Mapper
public interface UserMapper {
@Select("SELECT * FROM mmall_user WHERE ID = #{id}")
User findById(@Param("id") String id);
}
bean实体类,创建User类
public class User {
private Integer id;
private String username;
private String password;
private String email;
private String phone;
private String question;
private String answer;
private Integer role;
private Date createTime;
private Date updateTime;
// get/set方法省略
}
yaml参数配置
如果resource下自己的配置文件是application.properties,可以将后缀改为.yaml
配置文件内容如下:
spring:
application:
name: demo
datasource:
url: jdbc:mysql://localhost:3306/mmall_learning&useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
server:
port: 8081
运行调试
1.找到项目主程序main,运行调试。如果有问题,可参照后面的解决方案尝试解决。
2.使用postman或者client插件,测试发送请求
常见的报错解决
1.Could not autowire. No beans of ‘UserMapper’ type found.
不会影响实际编译和运行。如果想消除碍眼的红线,可以通过修改idea的检测级别消除红线。
2.The driver has not received any packets from the server
数据库参数配置信息不对,重新检查是否有问题
3.mysql出现The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone.这个报错。
可以在配置文件中的URL中加入?serverTimezone=UTC【文中展示的已加】
代码资源
受限于博客对资源链接的屏蔽,以上代码资源可以通过关注以下公众号并回复java项目
即可获取,该公众号仅用于免费资源分享。后续会在该基础上拓展相关项目代码。
公众号名称:Java侠客
觉得文章有帮助可以点个赞支持一下哟~