Spring boot学习总结

问题:

依赖冲突:当项目引入多个依赖时,不同的依赖可能会存在版本冲突,导致编译或运行时出现问题。解决方法是通过查看依赖树,排除冲突的依赖版本,或者选择相容的版本进行替换。

配置问题:Spring Boot使用了自动配置机制,但有时候需要手动配置特殊的场景或组件。

数据库连接问题:在与数据库交互时,可能粗心遗漏一些数据,导致无法与数据库连接。

总结:在Spring Boot开发过程中,遇到问题时应该及时查找相关资料,包括官方文档、社区论坛、博客等资源,寻找解决方法。同时,也要关注和学习最佳实践,了解一些常见的问题和解决方案,以便快速解决开发中遇到的困难。

示例项目


实体类定义 :

@Entity 注解表示这是一个实体类,将会被持久化到数据库中。 

@Data 注解是 Lombok 提供的注解,它会自动生成 getter、setter、toString 等常用方法。

@Id 注解表示该字段是主键。

@GeneratedValue 注解表示主键的生成策略,这里采用的是自增长(IDENTITY)方式生成主键。

private Integer id; 定义了一个 Integer 类型的 id 字段,用于存储学生的唯一标识。

private String name; 定义了一个 String 类型的 name 字段,用于存储学生的姓名。

private Integer age; 定义了一个 Integer 类型的 age 字段,用于存储学生的年龄。

private String email; 定义了一个 String 类型的 email 字段,用于存储学生的邮箱地址。

 访问接口Dao的定义:


public interface StudentDao extends JpaRepository<Student,Integer>:这里使用了 Spring Data JPA 提供的 JpaRepository 接口,并指定该接口的泛型参数为 <Student, Integer>,表示该 DAO 接口操作的实体类是 Student,主键类型是 Integer。这样就可以继承 JpaRepository 接口,获得一些常用的 CRUD 方法,如 save()、findById()、findAll() 等。

通过继承 JpaRepository,不需要手动编写查询方法的实现,Spring Data JPA 会根据方法名自动生成查询语句,例如 findById() 方法会生成对应的 SELECT * FROM student WHERE id = ? 查询语句。

在实际使用中,可以通过注入 StudentDao 对象来调用其中定义的方法,以实现对学生表的数据库操作。

控制器(Controller)类的定义:


@Controller 注解表示该类是一个控制器组件,用于接收并处理客户端的请求。

@Resource 注解是 Java EE 提供的注解,用于依赖注入。在这里,通过 @Resource 注解将 StudentService 对象注入到 StudentController 中。

private StudentService studentService; 声明了一个类型为 StudentService 的私有成员变量 studentService,用于访问学生的业务逻辑。

@GetMapping("student") 注解表示对应的处理方法将处理以 "/student" 结尾的 HTTP GET 请求。

public String student(Model model) 是处理 "/student" 请求的方法。它接收一个 Model 参数,用于向视图传递数据。

List<Student> students = studentService.findAll(); 调用 studentService 的 findAll() 方法,查询所有的学生信息,并将结果保存在 students 列表中。

model.addAttribute("students", students); 将查询到的学生列表添加到 model 中,以便在视图中进行展示。

return "student"; 返回字符串 "student",表示要渲染名为 "student" 的视图。

 服务(Service)类的定义:


@Service 注解表示该类是一个服务组件,用于封装具体的业务逻辑。

@Resource 注解用于依赖注入,将 StudentDao 对象注入到 StudentService 中。

private StudentDao studentDao; 声明了一个类型为 StudentDao 的私有成员变量 studentDao,用于访问数据库中的学生数据。

public List<Student> findAll() 方法用于查询所有的学生信息。调用 studentDao 的 findAll() 方法,返回所有的学生列表。

public Student findById(Integer id) 方法用于根据学生ID查询学生信息。调用 studentDao 的 findById() 方法,并通过 .get() 获取查询结果。

public Student add(String name, Integer age, String email) 方法用于新增学生信息。创建一个新的 Student 对象,并将参数设置为学生的属性值。然后通过 studentDao 的 save() 方法将学生对象保存到数据库中。

public Student modify(Integer id, String name, Integer age, String email) 方法用于修改学生信息。首先根据学生ID调用 findById() 方法获取学生对象,然后修改学生对象的属性值,并通过 studentDao 的 save() 方法更新数据库中的学生信息。

Spring boot的应用配置:


spring.datasource.url:指定数据库的连接URL,这里使用的是 MySQL 数据库,连接地址为 jdbc:mysql://127.0.0.1:3306/springboot,其中 127.0.0.1 是本地主机 IP 地址,3306 是 MySQL 数据库的默认端口,springboot 是数据库的名称。

spring.datasource.username:指定数据库的用户名,在这里设置为 root。

spring.datasource.password:指定数据库的密码,在这里设置为 20040324。

spring.thymeleaf.cache:指定 Thymeleaf 模板引擎是否启用缓存,这里设置为 false,表示禁用缓存,方便在开发阶段查看模板修改的效果。

spring.jpa.show-sql:指定是否在控制台输出 SQL 语句,设置为 true 表示输出 SQL 语句。

spring.jpa.hibernate.ddl-auto:指定 Hibernate 在启动时自动执行的数据库 schema 操作。在这里设置为 create,意味着每次应用启动时都会重新创建表结构,适合在开发和测试阶段使用。在生产环境中,一般应该将该值设置为 none 或者其他适当的值,避免误操作导致数据丢失。

html页面(add):


<!DOCTYPE html>:声明文档类型为 HTML5。

<html lang="en" xmlns:th="http://www.thymeleaf.org">:指定页面语言为英文,并引入了 Thymeleaf 的命名空间,用于在 HTML 中使用 Thymeleaf 的属性和表达式。

<head>:页面头部信息,包括标题、字符编码和引入的外部资源。

<meta charset="UTF-8">:指定页面的字符编码为 UTF-8。
<title>Title</title>:设置页面的标题为 "Title"。
<link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet">:引入了 Bootstrap CSS 样式文件,用于美化页面的样式。
<script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>:引入了 Bootstrap JavaScript 文件,用于提供页面交互功能。
<body>:页面主体部分,包含一个用于新增学生信息的表单。

<div class="container mt-3">:使用 Bootstrap 的容器样式,添加了顶部边距。
<h2>新增学生信息</h2>:显示一个标题,表示要新增学生信息。
<form action="">:表单元素,action 属性为空,表示提交表单时将数据发送至当前页面的 URL。
<div class="mb-3 mt-3">:用于包裹输入框的外部容器,添加了一些边距。
<label for="name" class="form-label">姓名:</label>:标签元素,用于显示表单输入项的标题。
<input type="text" class="form-control" id="name" placeholder="Enter name" name="name">:输入框元素,用于接收用户输入的姓名。其中,class 属性为 "form-control" 表示使用 Bootstrap 的表单样式,id 属性为 "name",placeholder 属性为 "Enter name" 为输入框提供一个提示信息,name 属性为 "name",表示该输入框的名称是 "name"。
<button type="submit" class="btn btn-primary">提交</button>:提交按钮,点击该按钮可以提交表单数据。

html页面(student):


<!DOCTYPE html>:声明文档类型为 HTML5。

<html lang="en" xmlns:th="http://www.thymeleaf.org">:指定页面语言为英文,并引入了 Thymeleaf 的命名空间,用于在 HTML 中使用 Thymeleaf 的属性和表达式。

<head>:页面头部信息,包括标题、字符编码和引入的外部资源。

<meta charset="UTF-8">:指定页面的字符编码为 UTF-8。
<title>Title</title>:设置页面的标题为 "Title"。
<link href="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/css/bootstrap.min.css" rel="stylesheet">:引入了 Bootstrap CSS 样式文件,用于美化页面的样式。
<script src="https://cdn.staticfile.org/twitter-bootstrap/5.1.1/js/bootstrap.bundle.min.js"></script>:引入了 Bootstrap JavaScript 文件,用于提供页面交互功能。
<body>:页面主体部分,包含一个用于显示学生信息的表格。

<table class="table table-hover">:定义一个表格元素,并指定使用 Bootstrap 的表格样式。
<thead>:表格头部部分,用于显示表格的列名。
<tr>:表格行元素,表示一行数据。
<th>:表格头部单元格元素,表示一列的列名。
<tbody>:表格主体部分,用于显示具体的学生数据。
<tr th:each="student:${students}">:使用 Thymeleaf 的循环语法,在每个学生对象上进行迭代。
<td th:text="${student.name}">John</td>:表格数据单元格元素,使用 Thymeleaf 的属性 th:text 将学生的姓名显示在单元格中。
<td th:text="${student.age}">Doe</td>:同样地,将学生的年龄显示在单元格中。
<td th:text="${student.email}">john@example.com</td>:将学生的邮箱显示在单元格中。
 

Spring boot常用注解介绍:

  • @SpringBootApplication:该注解用于标识一个 Spring Boot 应用的主类。它同时具备了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 的功能,简化了配置。
  • @RestController:该注解用于标识一个类是 RESTful 服务的控制器。它相当于同时使用了 @Controller 和 @ResponseBody 注解。
  • @RequestMapping:该注解用于映射请求路径和处理方法。可以用在类级别和方法级别,用于定义处理请求的 URL。
  • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:这些注解是 @RequestMapping 的缩写形式,用于指定对应的 HTTP 方法。
  • @PathVariable:该注解用于从 URL 路径中获取参数值,并将其绑定到方法参数上。
  • @RequestParam:该注解用于从请求的查询参数中获取参数值,并将其绑定到方法参数上。
  • @RequestBody:该注解用于将请求的 JSON 或 XML 数据绑定到方法参数上。
  • @Autowired:该注解用于自动装配依赖对象。Spring Boot 将根据类型进行自动查找,并将对应的实例注入到需要的地方。
  • @ConfigurationProperties:该注解用于将配置文件中的属性值绑定到一个 Java 对象上,方便获取和使用配置信息。
  • @Bean:该注解用于在 Spring 容器中定义一个 Bean,并返回其实例。
  • @Component:该注解用于标识一个类是组件,会被自动扫描并注册到 Spring 容器中。
  • @Service、@Repository:这些注解分别用于标识一个类是服务层组件和数据访问层组件,类似于 @Component 注解。
  • @Transactional:该注解用于控制事务的提交和回滚。可以作用在方法级别或类级别。
  • xml文件里的标签 :

  • <dependencies> </dependencies>定义项目所依赖的外部库、框架或其他模块。
  • <dependency> </dependency>标签用于定义项目所依赖的外部库或模块。通过添加<dependency>标签,我们可以声明项目需要使用的外部库的名称、版本和其他相关信息,以便Maven能够自动下载并管理这些依赖。   一个典型的<dependency>标签通常包含以下几个子元素:
  • <groupId>:指定依赖的组织或公司的ID。
  • <artifactId>:指定依赖的库的名称
  • <version>:指定依赖的版本号。

数据层框架的整合和使用,如mybatis、mybatis-plus、Jpa的原理和简单使用:


MyBatis:

  • 原理:MyBatis 是一种基于 SQL 映射的持久层框架。它通过 XML 或注解方式将 SQL 语句与 Java 方法进行映射,提供了灵活、可定制化的数据库访问能力。
  • 使用方法:首先需要引入 MyBatis 的依赖,配置数据库连接信息和 MyBatis 相关配置文件。然后创建 Mapper 接口和对应的 XML 文件,定义 SQL 语句和映射关系。最后,在需要使用数据库操作的地方注入 Mapper 接口并调用相应的方法。


MyBatis-Plus:

  • 原理:MyBatis-Plus 是在 MyBatis 的基础上进行封装的增强工具库,提供了更多的功能和便捷的开发方式,简化了 CRUD 操作和分页查询等常见需求。
  • 使用方法:和 MyBatis 类似,首先需要引入 MyBatis-Plus 的依赖,并配置数据库连接信息。然后创建实体类,使用注解标识表名和字段映射关系。接着创建 Mapper 接口继承 BaseMapper,并可以直接使用 MyBatis-Plus 提供的方法进行数据库操作。

JPA(Java Persistence API):

  • 原理:JPA 是 Java EE 标准中定义的一种对象关系映射(ORM)规范,提供了一种简化数据库访问的方式。它通过注解或 XML 配置文件将实体类与数据库表进行映射,并提供了一套 API 来操作和查询数据库。
  • 使用方法:首先需要引入 Spring Data JPA 的依赖,并配置相关的数据库连接信息。然后创建实体类,使用注解标识表名、字段映射关系和实体之间的关系。接着创建 Repository 接口继承 JpaRepository,并可以直接使用 Spring Data JPA 提供的方法进行数据库操作。

总结:无论是 MyBatis、MyBatis-Plus 还是 JPA,它们都是用于简化数据访问层的框架。选择合适的框架取决于个人的需求和偏好。

前端模板引擎Thymeleaf的整合和使用:


引入依赖:

在 pom.xml 文件中添加 Thymeleaf 的依赖项:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>


配置 Thymeleaf:

在 application.properties 或 application.yml 配置文件中,可以配置 Thymeleaf 的相关属性,如视图前缀、后缀等。

# application.properties spring.thymeleaf.prefix=/templates/ spring.thymeleaf.suffix=.html


创建 Thymeleaf 模板:

在项目的 src/main/resources/templates/ 目录下创建 HTML 模板文件。可以使用 Thymeleaf 的标签和表达式来实现动态数据的展示和逻辑控制。

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1 th:text="${message}">Default Message</h1> </body> </html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值