springboot+mybatis快速搭建入门项目

简介

本文介绍了如何使用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?serverTimezone=Asia/Shanghai&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侠客
请添加图片描述

觉得文章有帮助可以点个赞支持一下哟~

  • 17
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值