快速搭建一个简单的SpringBoot项目-包含数据库配置
前言
- 本文章仅供大家参考,项目经测试可以正常运行,如果对大家有起到帮助的话可以点赞支持一下~
- 本文章内容主要是为了方便大家快速创建项目!
- 如有不对的地方,欢迎指正!
第一步:新建项目
1.选择Spring Initializr,配置jkd(建议1.8版本)
2. 点击右下角 Next 进行下一步,按照红框中作选择
3. 点击右下角 Next 进行下一步,选择Web并勾选Spring Web
4. 点击右下角 Next 进行下一步,给项目起一个名字(springbootdemo)
5. 点击右下角 Finish 进行下一步,项目创建成功,红框里边的可以直接删除
第二步:配置maven
1.按下ctrl+alt+s快捷键,如下图配置
3. 修改配置文件为 .yml 格式(个人喜好而已)
第三步:导入依赖
<!--springboot+mybatis的依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!--MySQL数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid数据库连接池依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<!--Lombok依赖(可以配置也可以不用配置具体看自己)-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
添加依赖后如下图:
第四步:配置Application
配置application.yml文件:
server:
#设置端口号
port: 8081 #默认端口是8080
spring:
datasource:
#数据库用户名
username: root
#数据库用户密码
password: root1234%
#serverTimezone=UTC 解决市区的报错 一般mysql是8.0以上的是必须配置这个
#userUnicode=true&characterEncoding=utf-8 指定字符编码、解码格式
url: jdbc:mysql://192.168.42.111:3306/hotel?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
#设置驱动类
driver-class-name: com.mysql.cj.jdbc.Driver
#设置数据源
type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 默认是不注入这些属性值的,需要自己绑定
#druid 数据源专有配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# 配置mybatis
mybatis:
#指定pojo扫描包位置让mybatis自动扫描到指定义的pojo包下
type-aliases-package: com.sunny.springbootdemo.model.pojo
#指定位置扫描Mapper接口对应的XML文件 classpath:xml文件位置
mapper-locations: classpath:mapper/*.xml
第五步:创建需要的mapper、service、cotroller目录
创建所需要的项目目录:
第六步:创建数据表
- 创建数据库语句:
/*Table structure for table `userinfo` */
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`password` varchar(30) NOT NULL,
`authority` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*Data for the table `userinfo` */
insert into `userinfo`(`id`,`username`,`password`,`authority`) values (1,'root','123456','admin'),(2,'me','123456','admin');
第七步:创建项目类文件
1.创建pojo
一般pojo类、mapper接口、service接口名字都是按照数据库中表的名字来创建的
创建UserInfo
package com.sunny.springbootdemo.model.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @projectName: springboot-demo
* @package: com.sunny.springbootdemo.model.pojo
* @className: UserInfo
* @author: sunyingtao
* @description: TODO
* @date: 2022/11/13 14:10
* @version: 1.0
*/
//使用@Data自动生成需要的get、set
@Data
//使用@AllArgsConstructor自动生成有参构造
@AllArgsConstructor
//使用@NoArgsConstructor自动生成无参构造
@NoArgsConstructor
public class UserInfo {
private Integer id;
private String username;
private String password;
private String authority;
}
2.创建mapper接口
创建UserInfoMapper
package com.sunny.springbootdemo.mapper;
import com.sunny.springbootdemo.model.pojo.UserInfo;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserInfoMapper {
/**
* 增加一条数据
* @param userInfo 数据
*/
void add(UserInfo userInfo);
/**
* 删除一条数据
* @param id 被删除数据的id
*/
void delete(Integer id);
/**
* 修改一条数据
* @param userInfo 修改的数据
*/
void update(UserInfo userInfo);
/**
* 根据id去查询一条数据
* @param id 查询的id
*/
UserInfo queryById(Integer id);
/**
* 查询全部数据
* @return
*/
List<UserInfo> queryAll();
}
3.创建mapper.xml
创建UserInfoMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sunny.springbootdemo.mapper.UserInfoMapper">
<insert id="add" parameterType="com.sunny.springbootdemo.model.pojo.UserInfo">
insert into userinfo (username, password, authority)
values (#{username},#{password},#{authority});
</insert>
<delete id="delete" parameterType="Integer">
delete from userinfo where id = #{id};
</delete>
<update id="update" parameterType="com.sunny.springbootdemo.model.pojo.UserInfo">
update userinfo set username=#{username},password=#{password},authority=#{authority}
where id=#{id};
</update>
<select id="queryById" parameterType="Integer" resultType="com.sunny.springbootdemo.model.pojo.UserInfo">
select * from userinfo where id=#{id};
</select>
<select id="queryAll" resultType="com.sunny.springbootdemo.model.pojo.UserInfo">
select * from userinfo;
</select>
</mapper>
4.创建service
创建UserInfoService
package com.sunny.springbootdemo.service;
import com.sunny.springbootdemo.model.pojo.UserInfo;
import java.util.List;
public interface UserInfoService {
/**
* 增加一条数据
* @param userInfo 数据
*/
void add(UserInfo userInfo);
/**
* 删除一条数据
* @param id 被删除数据的id
*/
void delete(Integer id);
/**
* 修改一条数据
* @param userInfo 修改的数据
*/
void update(UserInfo userInfo);
/**
* 根据id去查询一条数据
* @param id 查询的id
*/
UserInfo queryById(Integer id);
/**
* 查询全部数据
* @return
*/
List<UserInfo> queryAll();
}
创建UserInfoServiceImpl
package com.sunny.springbootdemo.service.impl;
import com.sunny.springbootdemo.mapper.UserInfoMapper;
import com.sunny.springbootdemo.model.pojo.UserInfo;
import com.sunny.springbootdemo.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @projectName: springboot-demo
* @package: com.sunny.springbootdemo.service.impl
* @className: UserInfoServiceImpl
* @author: sunyingtao
* @description: TODO
* @date: 2022/11/13 14:36
* @version: 1.0
*/
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Autowired
private UserInfoMapper userInfoMapper;
@Override
public void add(UserInfo userInfo) {
userInfoMapper.add(userInfo);
}
@Override
public void delete(Integer id) {
userInfoMapper.delete(id);
}
@Override
public void update(UserInfo userInfo) {
userInfoMapper.update(userInfo);
}
@Override
public UserInfo queryById(Integer id) {
return userInfoMapper.queryById(id);
}
@Override
public List<UserInfo> queryAll() {
return userInfoMapper.queryAll();
}
}
5.创建controller
这里我先去pom中配置一个fastjson依赖这是阿里巴巴开源的,用来转换成JSON和类的格式的
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
创建 UserInfoController
package com.sunny.springbootdemo.controller;
import com.alibaba.fastjson.JSON;
import com.sunny.springbootdemo.model.pojo.UserInfo;
import com.sunny.springbootdemo.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
* @projectName: springboot-demo
* @package: com.sunny.springbootdemo.controller
* @className: UserInfoController
* @author: sunyingtao
* @description: TODO
* @date: 2022/11/13 14:38
* @version: 1.0
*/
@RestController
@RequestMapping(value = "/test")
public class UserInfoController {
@Autowired
private UserInfoService userInfoService;
@GetMapping
public List<UserInfo> queryAll(){
List<UserInfo> userInfoList = userInfoService.queryAll();
return userInfoList;
}
//使用了RestFull风格
@GetMapping("/{id}")
public String query(@PathVariable(value = "id")Integer id){
UserInfo userInfo = userInfoService.queryById(id);
List<UserInfo> userInfoList = new ArrayList<>();
userInfoList.add(userInfo);
return JSON.toJSONString(userInfoList);
}
//post请求
//@RequestBody 表示接收请求是JSON格式的数据
@PostMapping
public String add(@RequestBody UserInfo userInfo){
userInfoService.add(userInfo);
return "添加OK";
}
//Delete请求
@DeleteMapping(value = "/{id}")
public String delete(@PathVariable("id")Integer id){
userInfoService.delete(id);
return "删除成功";
}
//Put请求
@PutMapping("/{id}")
public String update(@PathVariable("id")Integer id,
@RequestBody UserInfo userInfo){
userInfo.setId(id);
userInfoService.update(userInfo);
return "修改成功";
}
}
第八步:启动项目
启动类上添加 @Mapper 注解
启动项目,日志打印启动成功。
第九步:测试请求
Postman测试工具下载路径: Postman
- 查询测试:
源码路径:后期补上~