springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

下面详细讲解一下如何使用Spring Boot、IDEA和Maven搭建多模块项目并连接数据库测试。

环境准备

在开始之前,确保你已经安装了以下环境:

  • JDK 1.8或以上版本
  • IDEA集成开发环境
  • Maven构建工具
  • 数据库(本次示例使用MySQL)

创建Maven多模块项目

  1. 打开IDEA,点击File -> New -> Project,选择Maven -> Create from archetype,然后选择maven-archetype-quickstart模板创建一个普通的Maven项目。

  2. 创建完项目后,打开pom.xml文件,添加以下依赖:

```xml



org.springframework.boot
spring-boot-starter-parent
2.4.1
pom
import

   <!-- 数据库连接依赖 -->
   <dependency>
       <groupId>com.zaxxer</groupId>
       <artifactId>HikariCP</artifactId>
       <version>4.0.2</version>
   </dependency>

   <!-- MySQL驱动依赖 -->
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.22</version>
   </dependency>


```

  1. 创建一个子模块,用于存放数据访问和业务逻辑处理的代码。右键项目名称,选择New -> Module,输入子模块名称并按照默认选项创建。

  2. 在子模块的pom.xml文件中添加以下依赖:

```xml



org.springframework.boot
spring-boot-starter

   <!-- 数据库连接依赖 -->
   <dependency>
       <groupId>com.zaxxer</groupId>
       <artifactId>HikariCP</artifactId>
   </dependency>

   <!-- MySQL驱动依赖 -->
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
   </dependency>


```

编写代码

  1. 在子模块中创建一个实体类User

java
@Data
public class User {
private Long id;
private String name;
private Integer age;
}

  1. 创建一个UserService接口,用于定义增删改查等操作。

```java
public interface UserService {
User save(User user);

   void deleteById(Long id);

   User findById(Long id);

   List<User> findAll();

}
```

  1. 创建一个UserServiceImpl实现类,实现UserService接口中定义的方法。

```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;

   @Override
   public User save(User user) {
       String sql = "insert into user(name, age) values (?, ?)";
       KeyHolder keyHolder = new GeneratedKeyHolder();
       jdbcTemplate.update(connection -> {
           PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
           ps.setString(1, user.getName());
           ps.setInt(2, user.getAge());
           return ps;
       }, keyHolder);
       user.setId(keyHolder.getKey().longValue());
       return user;
   }

   // 省略其他方法的实现

}
```

  1. 编写一个Test类,用于对UserService接口中定义的方法进行测试。

```java
@SpringBootTest
public class UserServiceImplTest {
@Autowired
private UserService userService;

   @Test
   public void testUserCrud() {
       // 封装数据
       User user = new User();
       user.setName("小明");
       user.setAge(18);

       // 添加数据
       userService.save(user);
       assertNotNull(user.getId());

       // 根据ID查询数据
       User savedUser = userService.findById(user.getId());
       assertEquals(user.getName(), savedUser.getName());
       assertEquals(user.getAge(), savedUser.getAge());

       // 查询所有数据
       List<User> userList = userService.findAll();
       assertNotNull(userList);
       assertTrue(userList.size() > 0);

       // 删除数据
       userService.deleteById(user.getId());
       User deletedUser = userService.findById(user.getId());
       assertNull(deletedUser);
   }

}
```

连接数据库进行测试

  1. application.yml中配置数据库相关信息。

yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

  1. 运行Test类,查看测试结果是否符合预期。

示例说明

  1. 在子模块中添加一个UserServiceTest测试类,用于测试UserService接口的实现类。在该测试类中,我们注入了一个UserServiceImpl实例,并调用了其中的几个方法进行测试。

```java
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserServiceImpl userService;

   @Test
   public void testSave() {
       User user = new User();
       user.setName("张三");
       user.setAge(20);

       User savedUser = userService.save(user);
       assertNotNull(savedUser.getId());
   }

   @Test
   public void testFindById() {
       User user = userService.findById(1L);
       assertNotNull(user);
   }

   @Test
   public void testDeleteById() {
       userService.deleteById(1L);
       User user = userService.findById(1L);
       assertNull(user);
   }

   @Test
   public void testFindAll() {
       List<User> userList = userService.findAll();
       assertNotNull(userList);
   }

}
```

  1. 在子模块的resources目录下新建一个script文件夹,用于存放数据库初始化脚本。在该文件夹下新建一个db.sql文件,编写如下SQL语句:

sql
create table user(
id bigint primary key auto_increment,
name varchar(20),
age int
);

然后在application.yml中添加以下配置,用于在项目启动时自动执行该SQL脚本:

yaml
spring:
datasource:
schema: classpath:script/db.sql

经过以上配置和操作,我们的springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)就完成了,你可以根据自己的需求进行更改和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试) - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • Spring Batch 入门示例

    下面详细讲解Spring Batch入门示例的完整攻略,内容包括: Spring Batch 简介 Spring Batch 入门示例概述 示例1:批处理读取 CSV 文件并输出到控制台 示例2:批处理读取数据库中的数据并写入到 XML 文件中 Spring Batch 简介 Spring Batch 是一个高效、强大、可重用的批处理框架,能够处理海量的数据…

    Java 2023年6月3日
    00
  • Java(springboot) 读取txt文本内容代码实例

    下面是关于”Java(springboot) 读取txt文本内容代码实例”的完整攻略: 1. 准备工作 在开始实际操作之前,请确保你已经按照以下步骤准备就绪: 已安装好springboot 已经找到要读取的txt文件,并将其放置于项目的资源文件夹中 2. 代码实现 2.1. 读取文件内容到String import org.springframework.c…

    Java 2023年5月19日
    00
  • jsp+jdbc实现连接数据库的方法

    下面我将详细讲解使用JSP和JDBC连接数据库的实现方法。 确认需求 首先需要明确自己的需求,比如需要连接的数据库的名称、表格的结构以及需要进行什么样的操作等等。此处以连接MySQL数据库为例,假设需要查询表格中所有用户的信息。 准备工作 在进行连接数据库之前,需要完成以下准备工作: 确认数据库的JDBC驱动版本,下载对应版本的JDBC驱动程序。 将驱动程序…

    Java 2023年6月15日
    00
  • 使用阿里云OSS的服务端签名后直传功能的流程分析

    使用阿里云OSS的服务端签名后直传功能的流程分析可以分为以下几个步骤: 1. 准备工作 在使用阿里云OSS的服务端签名后直传功能之前,需要先进行一些准备工作: 获得阿里云OSS的AccessKeyId和AccessKeySecret 根据需要,创建阿里云OSS的Bucket,并设置Bucket的访问权限 确定需要上传到阿里云OSS的文件的名称和存放路径 2.…

    Java 2023年5月23日
    00
  • SpringMVC中Controller类数据响应的方法

    下面是SpringMVC中Controller类数据响应的方法的完整攻略。 什么是Controller Controller负责处理来自用户的请求,并将处理结果返回给用户。在SpringMVC中,Controller是一个Java类,并使用@Controller注解来标识。 Controller类数据响应的方法 在Controller中,数据响应的方法有很多…

    Java 2023年6月15日
    00
  • Java Kafka实现延迟队列的示例代码

    Java Kafka是一款流行的分布式消息队列,支持高效的消息传递以及延迟队列的实现,下面详细讲解如何通过Java Kafka实现延迟队列的示例代码。 延迟队列简介 延迟队列是指将消息发送到消息队列中,消息并不会立即发送给消费者,而是在一定的时间后再发送给消费者,这种方式被称之为延迟队列。 Java Kafka延迟队列示例 下面给出Java Kafka实现延…

    Java 2023年5月20日
    00
  • javascript中负数算术右移、逻辑右移的奥秘探索

    JavaScript中负数算术右移、逻辑右移的奥秘探索 1. 什么是右移运算符 在 JavaScript 中,右移运算符由三个大于号(>>>),两个大于号(>>) 和一个小于号(<<)组成。右移运算符可以对二进制数进行运算,将其向右移动指定的位数。右移运算符在常见的开发中并不常用,但是在某些场景下会非常有用。 1.1…

    Java 2023年6月15日
    00
  • AngularJS入门教程之 XMLHttpRequest实例讲解

    AngularJS入门教程之 XMLHttpRequest实例讲解 介绍 在使用 AngularJS 进行 Web 开发的过程中,我们通常会需要使用 http 请求来获取数据或者提交数据。而 XMLHttpRequest,则是实现这一功能时必不可少的 API 之一。本文主要介绍如何在 AngularJS 中使用 XMLHttpRequest 进行 http …

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部