下面详细讲解一下如何使用Spring Boot、IDEA和Maven搭建多模块项目并连接数据库测试。
环境准备
在开始之前,确保你已经安装了以下环境:
- JDK 1.8或以上版本
- IDEA集成开发环境
- Maven构建工具
- 数据库(本次示例使用MySQL)
创建Maven多模块项目
-
打开IDEA,点击
File
->New
->Project
,选择Maven
->Create from archetype
,然后选择maven-archetype-quickstart
模板创建一个普通的Maven项目。 -
创建完项目后,打开
pom.xml
文件,添加以下依赖:
```xml
<!-- 数据库连接依赖 -->
<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>
```
-
创建一个子模块,用于存放数据访问和业务逻辑处理的代码。右键项目名称,选择
New
->Module
,输入子模块名称并按照默认选项创建。 -
在子模块的
pom.xml
文件中添加以下依赖:
```xml
<!-- 数据库连接依赖 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<!-- MySQL驱动依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
```
编写代码
- 在子模块中创建一个实体类
User
。
java
@Data
public class User {
private Long id;
private String name;
private Integer age;
}
- 创建一个
UserService
接口,用于定义增删改查等操作。
```java
public interface UserService {
User save(User user);
void deleteById(Long id);
User findById(Long id);
List<User> findAll();
}
```
- 创建一个
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;
}
// 省略其他方法的实现
}
```
- 编写一个
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);
}
}
```
连接数据库进行测试
- 在
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
- 运行
Test
类,查看测试结果是否符合预期。
示例说明
- 在子模块中添加一个
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);
}
}
```
- 在子模块的
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技术站