Spring Boot 实战 :入门篇

左手的ㄟ右手 2022-02-05 08:11 363阅读 0赞

先说一下啥是 Spring Boot ? (虽然我觉得写这个没多大意义吧。。但是还是要科普一下

  1. ** **Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot 并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。同时它集成了大量常用的第三方库配置,Spring Boot应用中这些第三方库几乎可以是零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只需要非常少量的配置代码(基于 Java 的配置),开发者能够更加专注于业务逻辑。

Spring Boot 优势有哪些 ? (反正就是各种简化

  1. ** **1. 创建独立的Spring应用程序
  2. 2. 嵌入的Tomcat,无需部署WAR文件
  3. 3. 简化Maven配置
  4. 4. 自动配置Spring
  5. 5. 提供生产就绪型功能,如指标,健康检查和外部配置
  6. 6. 绝对没有代码生成并且对XML也没有配置要求

介绍到此结束,下面进入正题!!

-————————————————————————————— 分界线 ———————————————————————————————————-

因为网上的许多部署的 Spring Boot 版本都有错误,所以呢,这里我们就简单的整合了一下,实话实说,博主也是第一次搭建 Boot 如有不足,请留言补充,先说一下我们的环境:

首先说一下,我们这地方用的 Tk_MyBatis 其实就是 MyBatis ,只不过是把一些简单方法给封装了一下 类似于 Jpa

开发环境 :JDK1.8 — IDEA 2018.3 — MyBatis

首先,搭建 Spring Boot 项目,这些地方我们就简单的写一下。。不做过多解释,我们主要看功能,以及可能会爆出的错误信息

点击 File — New — Project 选择 Spring Initializr 默认 jdk 1.8 然后 Next 下图中红色标记的

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70

这个就根据喜好定义就行了。。个人练习的话不是很重要(仅代表个人意见)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 1

因为这个地方我们只是实现简单的增删改查,所以就选择几个能用到的就好了

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 2

最后输入我们的项目名称

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 3

创建完成后,看一下我们的项目结构(这个是我之前搭建好的结构)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 4

首先配置我们的 Pom.xml 文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <!-- 声明此工程是一个Spring Boot 应用 -->
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId><!-- 是一个很特殊的starter用来提供相关Maven默认的依赖,使用它后可以省略常用包的version -->
  9. <version>2.1.4.RELEASE</version> <!-- 版本号 -->
  10. <relativePath/> <!-- lookup parent from repository -->
  11. </parent>
  12. <groupId>com.cs</groupId>
  13. <artifactId>mybatis</artifactId>
  14. <version>0.0.1-SNAPSHOT</version>
  15. <name>mybatis</name>
  16. <description>Demo project for Spring Boot</description>
  17. <properties> <!-- JDK 版本 -->
  18. <java.version>1.8</java.version>
  19. </properties>
  20. <dependencies>
  21. <dependency><!-- Thymeleaf 模板引擎 -->
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  24. </dependency>
  25. <dependency><!-- 因为我们搭建的是 Web 应用 引用依赖 -->
  26. <groupId>org.springframework.boot</groupId>
  27. <artifactId>spring-boot-starter-web</artifactId><!-- Web 开发支持 默认使用 Tomcat 8 -->
  28. </dependency>
  29. <dependency><!-- MyBatis 依赖 -->
  30. <groupId>org.mybatis.spring.boot</groupId>
  31. <artifactId>mybatis-spring-boot-starter</artifactId>
  32. <version>2.0.1</version>
  33. </dependency>
  34. <dependency> <!--Mybatis与SpringBoot的集成依赖-->
  35. <groupId>org.mybatis.spring.boot</groupId>
  36. <artifactId>mybatis-spring-boot-starter</artifactId>
  37. <version>1.1.1</version>
  38. <exclusions>
  39. <exclusion>
  40. <artifactId>mybatis-spring</artifactId>
  41. <groupId>org.mybatis</groupId>
  42. </exclusion>
  43. </exclusions>
  44. </dependency>
  45. <dependency><!--Mybatis与Spring的集成依赖-->
  46. <groupId>org.mybatis</groupId>
  47. <artifactId>mybatis-spring</artifactId>
  48. <version>1.3.2</version>
  49. </dependency>
  50. <dependency><!-- MySQL 连接数据库的驱动程序 -->
  51. <groupId>mysql</groupId>
  52. <artifactId>mysql-connector-java</artifactId>
  53. <scope>runtime</scope>
  54. </dependency>
  55. <dependency><!-- 这个依赖和测试相关,只要引入它,就会把所有与测试相关的包全部引入 -->
  56. <groupId>org.springframework.boot</groupId>
  57. <artifactId>spring-boot-starter-test</artifactId>
  58. <scope>test</scope>
  59. </dependency>
  60. <dependency><!-- 热部署 -->
  61. <groupId>org.springframework.boot</groupId>
  62. <artifactId>spring-boot-devtools</artifactId>
  63. <optional>true</optional>
  64. </dependency>
  65. <dependency><!-- tk_MyBatis -->
  66. <groupId>tk.mybatis</groupId>
  67. <artifactId>mapper-spring-boot-starter</artifactId>
  68. </dependency>
  69. <dependency>
  70. <groupId>tk.mybatis</groupId>
  71. <artifactId>mapper</artifactId>
  72. <version>4.0.0</version>
  73. </dependency>
  74. <dependency>
  75. <groupId>org.projectlombok</groupId>
  76. <artifactId>lombok</artifactId>
  77. </dependency>
  78. <dependency><!-- log4j 日志 -->
  79. <groupId>log4j</groupId>
  80. <artifactId>log4j</artifactId>
  81. <version>1.2.17</version>
  82. </dependency>
  83. <dependency><!-- Tool 工具类 -->
  84. <groupId>com.google.code.gson</groupId>
  85. <artifactId>gson</artifactId>
  86. <version>2.8.5</version>
  87. </dependency>
  88. <dependency>
  89. <groupId>org.jdom</groupId>
  90. <artifactId>jdom2</artifactId>
  91. <version>2.0.6</version>
  92. </dependency>
  93. </dependencies>
  94. <build>
  95. <plugins>
  96. <plugin>
  97. <groupId>org.springframework.boot</groupId>
  98. <artifactId>spring-boot-maven-plugin</artifactId>
  99. </plugin>
  100. </plugins>
  101. </build>
  102. </project>

然后再配置 application.properties 这个地方也有朋友喜欢用 yml 但是不巧这里就先只配置了 properties 的

  1. # 自定义端口号 默认为 8080
  2. server.port = 8080
  3. # 添加 MySQL 数据库配置 127.0.0.1 作用和 localhost 一样
  4. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot_dome?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true
  5. # 用户名
  6. spring.datasource.username=root
  7. # 密码
  8. spring.datasource.password=root
  9. # 驱动
  10. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  11. # Thymeleaf 配置 模板支持 HTML XML Text JavaScript
  12. spring.thymeleaf.mode=HTML5
  13. # 编码,可不用配置
  14. spring.thymeleaf.encoding=utf-8
  15. # 内容类别,可不用配置
  16. spring.thymeleaf.content-type=text/html
  17. # 开发配置为 false 避免修改模板还要重启服务器
  18. spring.thymeleaf.cache=false
  19. # 配置模板路径,默认是 templates 可以不用配置
  20. spring.thymeleaf.prefix=classpath:/templates/

这俩都配置好了之后,最起码可以保证项目能运行了。。哦哦哦不对。。还有一个地方

也是最重要的一部分!!!就是我们项目的主类!!一般新建的项目是这个样子的

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 5

然后我们再给他加上几个注解:

  1. @ComponentScan(basePackages = "com.cs.mybatis.*") // 扫描主程序文件
  2. @MapperScan("com.cs.mybatis.mapper") // 扫描这个包下的 Mapper 文件
  3. @ServletComponentScan // 使用该注解后,Servlet Filter Listener 可以直接通过

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 6

最后建一个测试类,测试一下是否可以访问成功,写好测试方法之后,点击右上角绿色的三角按钮启动,上边也介绍了,SpringBoot 有内置的 Tomcat 所以不用我们来配置

20190505152903603.png

  1. /**
  2. * @ClassName TestController
  3. * @Author linluochen
  4. * @Date 2019/4/19 16:09
  5. * @Version 1.0
  6. **/
  7. @Controller // 声明这是一个 Controller 表示此类用于负责处理 Web 请求
  8. public class TestController {
  9. @RequestMapping("Test") // 如果参数链接的请求的参数相同则调用此方法
  10. @ResponseBody // 表示这个的返回值只一个文本不是一个视图路径 通常用于接收 AJAX 请求
  11. public String Test(){
  12. System.out.println("来了老弟?");
  13. return "Hello World";
  14. }
  15. }

页面输出结果为,同时查看控台也会有提示,这里就不贴图了。。

20190505153015762.png

到这里,第一部分搭建项目就算完成了下面就是集成 MyBatis 进行增删改查

-————————————————————————————— 分界线 ———————————————————————————————————-

首先我们右键 New 一个 Package 包

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 7

然后创建好,model,mapper,service,serviceimpl 大概结构就是这个样子

model 用来存放实体类

mapper 和 service 用来放接口

serviceimpl 业务逻辑层,简单来说就是实现接口业务的地方

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 8

首先,现在数据库创建一个表:

  1. create table teacher(
  2. id int(11) primary key auto_increment, // 主键,自增
  3. name varchar(30) ,
  4. age int(11)
  5. )

然后创建 Model 层:

  1. package com.cs.mybatis.model;
  2. import java.io.Serializable;
  3. import javax.persistence.Column;
  4. import javax.persistence.Id;
  5. import javax.persistence.Table;
  6. import lombok.Data;
  7. import lombok.EqualsAndHashCode;
  8. @Data
  9. @EqualsAndHashCode(callSuper=false)
  10. @Table(name="teacher") // 数据库名对应
  11. public class Teacher implements Serializable {
  12. // 序列化
  13. private static final long serialVersionUID = 1L;
  14. /**
  15. * ID
  16. */
  17. @Id // 声明主键
  18. @Column(name = "id") // 与数据库字段名对应
  19. private Integer id;
  20. /**
  21. * 名字
  22. */
  23. @Column(name = "name")
  24. private String name;
  25. /**
  26. * 年龄
  27. */
  28. @Column(name = "age")
  29. private Integer age;
  30. public Teacher(){
  31. }
  32. public Teacher(
  33. Integer id
  34. ){
  35. this.id = id;
  36. }
  37. public void setId(Integer id) {
  38. this.id = id;
  39. }
  40. public Integer getId() {
  41. return this.id;
  42. }
  43. public void setName(String name) {
  44. this.name = name;
  45. }
  46. public String getName() {
  47. return this.name;
  48. }
  49. public void setAge(Integer age) {
  50. this.age = age;
  51. }
  52. public Integer getAge() {
  53. return this.age;
  54. }
  55. }

Mapper 层,这个地方我们集成了一下 Tk_MyBatis 相当于一个持久层 API 用过 Jpa 的朋友应该知道这个是啥意思,一般不是特别复杂的 sql 就不用在 Mapper 层写了,Tk 就可以搞定,当然如果是复杂的 sql 例如多表联合查询等还是要在Mapper操作的,如果实在不懂用法的话,可以给我留言评论,或者加我QQ,我会在最底部留下的

想了解详细用法的朋友可以看官方文档:https://github.com/abel533/Mapper/wiki/6.example 这里我们不做过多的介绍

  1. package com.cs.mybatis.mapper;
  2. import com.cs.mybatis.base.BaseMapper;
  3. import com.cs.mybatis.model.Teacher;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. public interface TeacherMapper extends BaseMapper<Teacher> { // 这个地方我们调用的 Tk_MyBatis 持久层 API
  7. }

Service 层,这个就照常写就可以了

  1. /*
  2. * Powered By [rapid-framework]
  3. * Web Site: http://www.rapid-framework.org.cn
  4. * Google Code: http://code.google.com/p/rapid-framework/
  5. */
  6. package com.cs.mybatis.service;
  7. import com.cs.mybatis.model.Teacher;
  8. import java.util.List;
  9. public interface TeacherService{
  10. /**
  11. * @title: 查询全部
  12. * @auther: linluochen
  13. * @date: 2019/5/5 10:28
  14. */
  15. List<Teacher> selectAll();
  16. /**
  17. * @title: 增加
  18. * @param: teacher
  19. * @auther: linluochen
  20. * @date: 2019/5/5 10:30
  21. */
  22. Integer insertSelective(Teacher teacher);
  23. }

ServiceImpl 实现类,这个地方调用我们的 Mapper 虽然我们 Mapper 没有写东西,但是由于我们的 Mapper 继承了 Tk_MyBatis 里面的属性,所以可以直接调用简单的单表查询的方法

  1. /*
  2. * Powered By [rapid-framework]
  3. * Web Site: http://www.rapid-framework.org.cn
  4. * Google Code: http://code.google.com/p/rapid-framework/
  5. */
  6. package com.cs.mybatis.service.impl;
  7. import com.cs.mybatis.mapper.TeacherMapper;
  8. import com.cs.mybatis.model.Teacher;
  9. import com.cs.mybatis.service.TeacherService;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.util.List;
  13. @Service
  14. public class TeacherServiceImpl implements TeacherService {
  15. @Autowired // 自动装配 Bean
  16. TeacherMapper teacherMapper;
  17. /**
  18. * @title: 查询全部
  19. * @auther: linluochen
  20. * @date: 2019/5/5 10:25
  21. */
  22. @Override
  23. public List<Teacher> selectAll() {
  24. return teacherMapper.selectAll();
  25. }
  26. /**
  27. * @title: 新增
  28. * @param: teacher
  29. * @auther: linluochen
  30. * @date: 2019/5/5 10:25
  31. */
  32. @Override
  33. public Integer insertSelective(Teacher teacher) {
  34. return teacherMapper.insertSelective(teacher);
  35. }
  36. }

写完这些之后,我们去测试一下能不能用,在左侧有一个 test 文件夹,然后打开,如下图

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 9

打开后在里面写入要测试的方法,这个类呢,是我们的测试类,所有的可执行操作都可以在这个里面进行测试,不过多解释,注解已经写得很清楚了,然后写完之后运行我们写的测试方法,在左侧会有一个绿色的三角标志,然后点击运行

  1. package com.cs.mybatis;
  2. import com.cs.mybatis.model.Teacher;
  3. import com.cs.mybatis.service.TeacherService;
  4. import org.junit.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringRunner;
  8. import javax.annotation.Resource;
  9. import java.util.List;
  10. @RunWith(SpringRunner.class)
  11. @SpringBootTest // 声明这个是一个 TestController
  12. public class MybatisApplicationTests {
  13. @Resource // 自动装配 Bean 用来调用你定义的方法
  14. TeacherService teacherService;
  15. @Test
  16. public void contextLoads() {
  17. }
  18. /**
  19. * @title: boot + mybatis selectAll()
  20. * @auther: linluochen
  21. * @date: 2019/5/5 10:41
  22. */
  23. @Test // 声明这个是个 TestClass
  24. public void TeacherSelectAll(){
  25. List<Teacher> teachersList = teacherService.selectAll(); // 获取实现类的方法
  26. for (Teacher teacher:teachersList) { // foreach 循环遍历
  27. System.out.println("ID:"+teacher.getId()+" "+"姓名:"+teacher.getName()+" "+"年龄:"+teacher.getAge());
  28. }
  29. }
  30. /**
  31. * @title: boot + mybatis insertSelective()
  32. * @param: teacher
  33. * @auther: linluochen
  34. * @date: 2019/5/5 10:41
  35. */
  36. @Test // 声明这个是个 TestClass
  37. public void TeacherInsertSelective(){
  38. Teacher teacher = new Teacher(); // new 一个对象
  39. teacher.setName("小明"); // set 放值
  40. teacher.setAge(16); // set 放值
  41. Integer thy = teacherService.insertSelective(teacher); // 调用方法 成功返回 1 失败返回 0
  42. if(thy == 1){ // 进行判断
  43. System.out.println("成功");
  44. }else{
  45. System.out.println("失败");
  46. }
  47. }
  48. }

查看我们的运行结果,可以在控制台看到我们的执行结果

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTM3NTQ2_size_16_color_FFFFFF_t_70 10

QQ :3044793043

如果有看不懂的,可以留言评论,附赠上我们的项目链接:https://download.csdn.net/download/qq_36537546/11160569

发表评论

表情:
评论列表 (有 0 条评论,363人围观)

还没有评论,来说两句吧...

相关阅读