目录
快速搭建一个简单的SpringBoot项目
前言
- 本文章仅供大家参考,如果对大家有起到帮助的话可以点赞支持一下~
- 主要发布是为了本人以后能方便的搭建一个SpringBoot项目的框架!!!
- 源码路径在文章最下方!
第一步新建项目
1.选择Spring Initializr
2.点击下一步
3.修改jdk的版本,再点击下一步
注意!
4.选中Spring Web,再下一步
5.给项目文件命名,再点击完成
这样子就会生成一个项目,如下图所示
下图中这些文件如果没有需要的情况下一般就直接删掉就好了!
第二步导入依赖
按照上面的步骤完成的打开pom.xml文件的配置依赖应该和我的是一样的!
接着我们添加一些需要的依赖
SpringBoot项目需要提供一个接口去拿到数据所有在这里我们需要能连接数据库的配置
<!--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文件 (使用aplication.properties也是可以的,只是本人一般使用.yml格式的)
配置项目需要修改的端口号、datasource、mybatis。
server:#设置端口号port:8081#默认端口是8080spring:datasource:#数据库用户名username: root
#数据库用户密码password:123456#serverTimezone=UTC 解决市区的报错 一般mysql是8.0以上的是必须配置这个#userUnicode=true&characterEncoding=utf-8 指定字符编码、解码格式url: jdbc:mysql://localhost:3306/metest?serverTimezone=UTC&userUnicode=true&characterEncoding=utf-8#设置驱动类driver-class-name: com.mysql.cj.jdbc.Driver
#设置数据源type: com.alibaba.druid.pool.DruidDataSource
#Spring Boot 默认是不注入这些属性值的,需要自己绑定#druid 数据源专有配置initialSize:5minIdle:5maxActive:20maxWait:60000timeBetweenEvictionRunsMillis:60000minEvictableIdleTimeMillis:300000validationQuery: SELECT 1 FROM DUAL
testWhileIdle:truetestOnBorrow:falsetestOnReturn:falsepoolPreparedStatements:true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4jfilters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize:20useGlobalDataSourceStat:trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# 配置mybatismybatis:#指定pojo扫描包位置让mybatis自动扫描到指定义的pojo包下type-aliases-package: com.me.test.pojo
#指定位置扫描Mapper接口对应的XML文件 classpath:xml文件位置mapper-locations: classpath:mapper/*.xml
第四步创建需要的mapper、service、cotroller层
创建需要的文件夹
创建数据库
spl语句代码
CREATEDATABASE/*!32312 IF NOT EXISTS*/`metest`/*!40100 DEFAULT CHARACTER SET utf8 */;USE`metest`;/*Table structure for table `userinfo` */DROPTABLEIFEXISTS`userinfo`;CREATETABLE`userinfo`(`id`int(10)NOTNULLAUTO_INCREMENT,`username`varchar(30)NOTNULL,`password`varchar(30)NOTNULL,`authority`varchar(30)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8;/*Data for the table `userinfo` */insertinto`userinfo`(`id`,`username`,`password`,`authority`)values(1,'root','123456','admin'),(2,'me','123456','admin');
IDEA连接上Mysql数据库(主要为了方便查看创建pojo类和对于的mapper.xml文件)
找到需要的数据库
一般pojo类、mapper接口、service接口名字都是按照数据库中表的名字来创建的
创建pojo类
//使用@Data自动生成需要的get、set@Data//使用@AllArgsConstructor自动生成有参构造@AllArgsConstructor//使用@NoArgsConstructor自动生成无参构造@NoArgsConstructorpublicclass userInfo {privateInteger id;privateString username;privateString password;privateString authority;}
创建mapper接口
@Repository@MapperpublicinterfaceUserInfoMapper{/**
* 增加一条数据
* @param userInfo 数据
*/voidadd(UserInfo userInfo);/**
* 删除一条数据
* @param id 被删除数据的id
*/voiddelete(Integer id);/**
* 修改一条数据
* @param userInfo 修改的数据
*/voidupdate(UserInfo userInfo);/**
* 根据id去查询一条数据
* @param id 查询的id
*/UserInfoqueryById(Integer id);/**
* 查询全部数据
* @return
*/List<UserInfo>queryAll();}
创建对于mapper接口的xml文件
需要的mapper基本配置
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.me.test.mapper.UserInfoMapper"></mapper>
对于接口中的方法在添加需要的增删改查功能(原配置代码有问题、目前已修改)
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.me.test.mapper.UserInfoMapper"><insertid="add"parameterType="UserInfo">
insert into metest.userinfo (username, password, authority)
values (#{username},#{password},#{authority});
</insert><deleteid="delete"parameterType="Integer">
delete from metest.userinfo where id = #{id};
</delete><updateid="update"parameterType="UserInfo">
update metest.userinfo set username=#{username},password=#{password},authority=#{authority}
where id=#{id};
</update><selectid="queryById"parameterType="Integer"resultType="UserInfo">
select * from metest.userinfo where id=#{id};
</select><selectid="queryAll"resultType="UserInfo">
select * from metest.userinfo;
</select></mapper>
图中爆红不用管这个是因为我配置了一个插件的原因,实际在运行时不影响效果!
创建service层
UserInfoService代码(其实其中的方法也就是Maper接口中拷贝来的)
publicinterfaceUserInfoService{/**
* 增加一条数据
* @param userInfo 数据
*/voidadd(UserInfo userInfo);/**
* 删除一条数据
* @param id 被删除数据的id
*/voiddelete(Integer id);/**
* 修改一条数据
* @param userInfo 修改的数据
*/voidupdate(UserInfo userInfo);/**
* 根据id去查询一条数据
* @param id 查询的id
*/UserInfoqueryById(Integer id);/**
* 查询全部数据
* @return
*/List<UserInfo>queryAll();}
UserInfoServiceImpl代码(主要是做业务逻辑的)
有需要添加的功能可以直接在这一层添加修改
@ServicepublicclassUserInfoServiceImplimplementsUserInfoService{@AutowiredprivateUserInfoMapper userInfoMapper;@Overridepublicvoidadd(UserInfo userInfo){
userInfoMapper.add(userInfo);}@Overridepublicvoiddelete(Integer id){
userInfoMapper.delete(id);}@Overridepublicvoidupdate(UserInfo userInfo){
userInfoMapper.update(userInfo);}@OverridepublicUserInfoqueryById(Integer id){return userInfoMapper.queryById(id);}@OverridepublicList<UserInfo>queryAll(){return userInfoMapper.queryAll();}}
创建controller层
这里我先去pom中配置一个fastjson依赖这是阿里巴巴开源的,用来转换成JSON和类的格式的。
<!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.78</version></dependency>
我使用了RestFull风格去实现路径的请求
代码
//@Controller 控制层需要的注解//@RestController 使用这个也是可以的,但是使用后他里面所有请求返回的都是字符串!//一般只需要作为接口放回JSON格式数据的话推荐使用@RestController//@Controller这个是可以与Thymeleaf模板引擎使用时可以返回一个页面的@Controller//@RequestMapping指定路径名//@RequestMapping("/test")用这个来指定路径也是可以的@RequestMapping(value ="/test")publicclassUserInfoController{//获取到UserInfoService@AutowiredprivateUserInfoService userInfoService;//Get请求@GetMapping//@ResponseBody 注释后表示放回的是字符串@ResponseBodypublicStringqueryAll(){List<UserInfo> userInfoList = userInfoService.queryAll();returnJSON.toJSONString(userInfoList);}//使用了RestFull风格@GetMapping("/{id}")@ResponseBodypublicStringquery(@PathVariable(value ="id")Integer id){UserInfo userInfo = userInfoService.queryById(id);List<UserInfo> userInfoList =newArrayList<>();
userInfoList.add(userInfo);returnJSON.toJSONString(userInfoList);}//post请求//@RequestBody 表示接收请求是JSON格式的数据@PostMapping@ResponseBodypublicStringadd(@RequestBodyUserInfo userInfo){
userInfoService.add(userInfo);return"添加OK";}//Delete请求@DeleteMapping(value ="/{id}")@ResponseBodypublicStringdelete(@PathVariable("id")Integer id){
userInfoService.delete(id);return"删除成功";}//Put请求@PutMapping("/{id}")@ResponseBodypublicStringupdate(@PathVariable("id")Integer id,@RequestBodyUserInfo userInfo){
userInfo.setId(id);
userInfoService.update(userInfo);return"修改成功";}}
第五步测试请求
本人测试使用的工具是Postman
Postman下载路径:https://app.getpostman.com/app/download/win64
查询测试
查询没问题
增加数据测试
此时数据库数据也多了一条数据
修改测试
此时数据库的数据也发生了改变
删除测试
此时数据就被删除了
版权归原作者 是鱼染哟 所有, 如有侵权,请联系我们删除。