IT评测·应用市场-qidao123.com

标题: 【Java】springBoot初识(Web和数据库交互) [打印本页]

作者: 用户云卷云舒    时间: 2024-9-30 21:10
标题: 【Java】springBoot初识(Web和数据库交互)
【Java】springBoot初识(Web和数据库交互)


  
!可以先跳过前序直接看项目示例
1.前序

1.1.sping

1.1.1.依靠注入(DI)

  1. public class UserService {
  2.     private final UserRepository userRepository;
  3.     @Autowired
  4.     public UserService(UserRepository userRepository) {
  5.         this.userRepository = userRepository;
  6.     }
  7.     public void saveUser(User user) {
  8.         userRepository.save(user);
  9.     }
  10. }
复制代码

1.1.2.面向切面(AOP)

  1. // 日志切面
  2. @Aspect
  3. @Component
  4. public class LoggingAspect {
  5.     @Before("execution(* com.example.service.SomeService.doSomething(..))")
  6.     public void logBefore(JoinPoint joinPoint) {
  7.         System.out.println("Before " + joinPoint.getSignature().getName());
  8.     }
  9.     @After("execution(* com.example.service.SomeService.doSomething(..))")
  10.     public void logAfter(JoinPoint joinPoint) {
  11.         System.out.println("After " + joinPoint.getSignature().getName());
  12.     }
  13. }
  14. // 服务类
  15. @Service
  16. public class SomeService {
  17.     public void doSomething() {
  18.         // 业务逻辑
  19.     }
  20. }
复制代码
1.1.3.好处

依靠注入(DI)的好处
面向切面编程(AOP)的好处
1.2.spingboot的作用

2.项目示例

2.1利用IDEA创建SpringBoot项目


点击next,进入依靠的选择

先选择这些依靠后点击create,之后刷新maven下载这些依靠

2.2依靠的解释


  1. <dependencies>
  2.    
  3.    
  4.     <!-- 1 -->
  5.         <dependency>
  6.         <groupId>org.springframework.boot</groupId>
  7.         <artifactId>spring-boot-starter-parent</artifactId>
  8.     </dependency>
  9.    
  10.    
  11.     <!-- 2 -->
  12.     <dependency>
  13.         <groupId>org.springframework.boot</groupId>
  14.         <artifactId>spring-boot-starter-test</artifactId>
  15.         <scope>test</scope>
  16.     </dependency>
  17.    
  18.    
  19.     <!-- 3 -->
  20.     <dependency>
  21.                         <groupId>org.springframework.boot</groupId>
  22.                         <artifactId>spring-boot-starter-web</artifactId>
  23.         </dependency>
  24.    
  25.    
  26.     <!-- 4 -->
  27.     <dependency>
  28.                         <groupId>org.springframework.boot</groupId>
  29.                         <artifactId>spring-boot-starter-thymeleaf</artifactId>
  30.         </dependency>
  31.    
  32.    
  33.     <!-- 5 -->
  34.     <dependency>
  35.                         <groupId>org.springframework.boot</groupId>
  36.                         <artifactId>spring-boot-starter-data-jpa</artifactId>
  37.         </dependency>
  38.    
  39.    
  40.     <!-- 6 -->
  41.     <dependency>
  42.         <groupId>org.projectlombok</groupId>
  43.         <artifactId>lombok</artifactId>
  44.         <optional>true</optional>
  45.     </dependency>
  46.    
  47.         
  48. </dependencies>
复制代码
1.spring-boot-starter-parent

2.spring-boot-starter-test

3.spring-boot-starter-web

4.spring-boot-starter-thymeleaf

5.spring-boot-starter-data-jpa

6.lombok

2.3.spring-boot-starter-web与spring-boot-starter-thymeleaf的利用

源码在末了
我们单独测试这两项,以是将jpa依靠注释掉并刷新maven
  1.     <!-- 注释这个 -->
  2. <!--        <dependency>-->
  3. <!--                <groupId>org.springframework.boot</groupId>-->
  4. <!--                <artifactId>spring-boot-starter-data-jpa</artifactId>-->
  5. <!--        </dependency>-->
复制代码
创建cotroller包,在里面创建HelloWord类,写下如下代码


打开resources里面的templates,在里面创建helloWorld.html模板,写上如下代码


之后启动springBoot程序,并在浏览器访问http://127.0.0.1:8080/ (端口默以为8080) 则会看到hello,world字样


2.4 毗连mySQL数据库

首先取消对jpa依靠的注释,并刷新maven
由于是毗连mySQL数据库,以是我们还必要添加一个mySQL JDBC驱动的依靠:
  1.     <dependency>
  2.         <groupId>com.mysql</groupId>
  3.         <artifactId>mysql-connector-j</artifactId>
  4.         <scope>runtime</scope>
  5.     </dependency>
复制代码
配置application.properties文件,填写毗连mySQL的信息
first是我的一个数据库的名称


为first数据库中的表创建模型:
这是我的first数据库中的名为second的表

对应其表头创建模型


创建mySQL仓,里面有mySQL数据库增删改查的很多方法



利用findAll()方法找到second表中的所有数据并将电影名打印出来


写好测试类并运行,观看效果


2.5 将数据库中的表格在前端显示出来

写一个显示数据库数据的路由,读取数据库中的数据并将其添加到model中方便html模板调用


写html模板,将表second中的数据在前端呈现出来


运行springBoot程序,访问http://127.0.0.1:8080/mysqlData 可以看到以下的显示效果

3.源码

1.pom.xml

  1. <!-- pom.xml -->
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.         <modelVersion>4.0.0</modelVersion>
  6.         <parent>
  7.                 <groupId>org.springframework.boot</groupId>
  8.                 <artifactId>spring-boot-starter-parent</artifactId>
  9.                 <version>3.3.3</version>
  10.                 <relativePath/> <!-- lookup parent from repository -->
  11.         </parent>
  12.         <groupId>com.exam</groupId>
  13.         <artifactId>projectOf002</artifactId>
  14.         <version>0.0.1-SNAPSHOT</version>
  15.         <name>projectOf002</name>
  16.         <description>projectOf002</description>
  17.         <url/>
  18.         <licenses>
  19.                 <license/>
  20.         </licenses>
  21.         <developers>
  22.                 <developer/>
  23.         </developers>
  24.         <scm>
  25.                 <connection/>
  26.                 <developerConnection/>
  27.                 <tag/>
  28.                 <url/>
  29.         </scm>
  30.         <properties>
  31.                 <java.version>17</java.version>
  32.         </properties>
  33.         <dependencies>
  34.                 <dependency>
  35.                         <groupId>org.springframework.boot</groupId>
  36.                         <artifactId>spring-boot-starter-data-jpa</artifactId>
  37.                 </dependency>
  38.                 <dependency>
  39.                         <groupId>org.springframework.boot</groupId>
  40.                         <artifactId>spring-boot-starter-thymeleaf</artifactId>
  41.                 </dependency>
  42.                 <dependency>
  43.                         <groupId>org.springframework.boot</groupId>
  44.                         <artifactId>spring-boot-starter-web</artifactId>
  45.                 </dependency>
  46.                 <dependency>
  47.                         <groupId>org.projectlombok</groupId>
  48.                         <artifactId>lombok</artifactId>
  49.                         <optional>true</optional>
  50.                 </dependency>
  51.                 <dependency>
  52.                         <groupId>org.springframework.boot</groupId>
  53.                         <artifactId>spring-boot-starter-test</artifactId>
  54.                         <scope>test</scope>
  55.                 </dependency>
  56.                 <dependency>
  57.                         <groupId>com.mysql</groupId>
  58.                         <artifactId>mysql-connector-j</artifactId>
  59.                         <scope>runtime</scope>
  60.                 </dependency>
  61.         </dependencies>
  62.         <build>
  63.                 <plugins>
  64.                         <plugin>
  65.                                 <groupId>org.springframework.boot</groupId>
  66.                                 <artifactId>spring-boot-maven-plugin</artifactId>
  67.                                 <configuration>
  68.                                         <excludes>
  69.                                                 <exclude>
  70.                                                         <groupId>org.projectlombok</groupId>
  71.                                                         <artifactId>lombok</artifactId>
  72.                                                 </exclude>
  73.                                         </excludes>
  74.                                 </configuration>
  75.                         </plugin>
  76.                 </plugins>
  77.         </build>
  78. </project>
复制代码
2.HelloWorld.java

  1. // HelloWorld.java
  2. package com.exam.projectof002.controller;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. @Controller
  6. public class HelloWorld {
  7.     @GetMapping("/")
  8.     public String helloWorld() {
  9.         return "helloWorld";
  10.     }
  11. }
复制代码
3.helloWorld.html

  1. <!-- helloWorld.html -->
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5.     <meta charset="UTF-8">
  6.     <title>Title</title>
  7. </head>
  8. <body>
  9. <h1>hello,world!</h1>
  10. </body>
  11. </html>
复制代码
4.application.properties

  1. # application.properties
  2. spring.application.name=projectOf002
  3. spring.datasource.url=jdbc:mysql://localhost:3306/first
  4. spring.datasource.username=root
  5. spring.datasource.password=yourPassword
复制代码
5.MovieModel.java

  1. // MovieModel.java
  2. package com.exam.projectof002.model;
  3. import jakarta.persistence.Entity;
  4. import jakarta.persistence.GeneratedValue;
  5. import jakarta.persistence.Id;
  6. import jakarta.persistence.Table;
  7. import lombok.Data;
  8. @Entity
  9. @Data
  10. @Table(name="second")
  11. public class MovieModel {
  12.     @Id
  13.     @GeneratedValue
  14.     private Long id;
  15.     private String title;
  16.     private int year;
  17.     private String subject;
  18.     private String duration;
  19.     private String intro;
  20. }
复制代码
6.MysqlRepository.java

  1. // MysqlRepository.java
  2. package com.exam.projectof002.dao;
  3. import com.exam.projectof002.model.MovieModel;
  4. import org.springframework.data.jpa.repository.JpaRepository;
  5. import org.springframework.stereotype.Repository;
  6. @Repository
  7. public interface MysqlRepository extends JpaRepository<MovieModel,Long> {
  8. }
复制代码
7.MysqlCrudService.java

  1. // MysqlCrudService.java
  2. package com.exam.projectof002.service;
  3. import com.exam.projectof002.dao.MysqlRepository;
  4. import com.exam.projectof002.model.MovieModel;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class MysqlCrudService {
  10.     private final MysqlRepository mysqlRepository;
  11.     @Autowired
  12.     public MysqlCrudService(MysqlRepository mysqlRepository) {
  13.         this.mysqlRepository = mysqlRepository;
  14.     }
  15.     public List<MovieModel> getAllMovies() {
  16.         return mysqlRepository.findAll();
  17.     }
  18. }
复制代码
8.MysqlFindDataTest.java

  1. // MysqlFindDataTest.java
  2. package com.exam.projectof002;
  3. import com.exam.projectof002.model.MovieModel;
  4. import com.exam.projectof002.service.MysqlCrudService;
  5. import org.junit.jupiter.api.Test;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import java.util.List;
  9. @SpringBootTest
  10. public class MysqlFindDataTest {
  11.     @Autowired
  12.     MysqlCrudService mysqlCrudService;
  13.     @Test
  14.     public void test() {
  15.         List<MovieModel> movieModelList=mysqlCrudService.getAllMovies();
  16.         for(MovieModel movieModel:movieModelList){
  17.             System.out.println(movieModel.getTitle());
  18.         }
  19.     }
  20. }
复制代码
9.ShowMysqlData.java

  1. // ShowMysqlData.java
  2. package com.exam.projectof002.controller;
  3. import com.exam.projectof002.dao.MysqlRepository;
  4. import com.exam.projectof002.model.MovieModel;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.ui.Model;
  9. import java.util.List;
  10. @Controller
  11. public class ShowMysqlData {
  12.     MysqlRepository mysqlRepository;
  13.     @Autowired
  14.     public ShowMysqlData(MysqlRepository mysqlRepository) {
  15.         this.mysqlRepository = mysqlRepository;
  16.     }
  17.     @GetMapping("/mysqlData")
  18.     public String showMysqlData(Model model) {
  19.         List<MovieModel> movieModelList = mysqlRepository.findAll();
  20.         model.addAttribute("movieModelList", movieModelList);
  21.         return "mysqlData";
  22.     }
  23. }
复制代码
10.mysqlData.html

  1. <!--  mysqlData.html -->
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5.     <meta charset="UTF-8">
  6.     <title>MysqlData</title>
  7.     <style>
  8.         table,th,td{
  9.             border: 1px solid black;
  10.             border-collapse: collapse;
  11.             padding: 8px;
  12.         }
  13.     </style>
  14. </head>
  15. <body>
  16. <table>
  17.     <thead>
  18.     <tr>
  19.         <th>序号</th>
  20.         <th>电影名</th>
  21.         <th>出版年份</th>
  22.         <th>标语</th>
  23.         <th>片长</th>
  24.         <th>简介</th>
  25.     </tr>
  26.     </thead>
  27.     <tbody>
  28.     <tr th:each="movie : ${movieModelList}">
  29.         <td th:text="${movie.id}"></td>
  30.         <td th:text="${movie.title}"></td>
  31.         <td th:text="${movie.year}"></td>
  32.         <td th:text="${movie.subject}"></td>
  33.         <td th:text="${movie.duration}"></td>
  34.         <td th:text="${movie.intro}"></td>
  35.     </tr>
  36.     </tbody>
  37. </table>
  38. </body>
  39. </html>
复制代码
4.结语

本人资历尚浅,发博客主要是记录与学习,接待大佬们批评指教!大家也可以在评论区多多交换,相互学习,共同成长。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4