Spring Boot项目实战之实现与数据库的连接
概述
Spring Boot是一个快速开发框架,让我们可以专注于业务代码的开发,而不需要关心底层架构的细节。在实际开发中,与数据库的连接是一个非常常见的需求。本文将详细介绍如何在Spring Boot项目中实现与数据库的连接。
步骤
- 添加Spring Boot依赖
在pom.xml
文件中添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
该依赖包含了JDBC的相关依赖,可以让我们更方便地进行与数据库的连接。
- 配置数据源
在application.properties
中配置数据库相关信息,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
在上述配置中,我们指定了连接的数据库地址、用户名、密码以及驱动类。
- 创建JDBC模板
在Spring Boot中,我们可以使用JDBC模板来进行数据库的访问。在代码中创建JDBC模板可以使用JdbcTemplate
类。
@Configuration
public class JdbcTemplateConfig {
@Autowired
private DataSource dataSource;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
}
在上述代码中,我们通过@Configuration
注解将该类声明为一个配置类,然后通过@Autowired
注解注入DataSource
对象,最后创建JdbcTemplate
对象。
- 编写DAO
在Spring Boot中,我们一般使用DAO(Data Access Object)层来进行数据库的操作。在代码中,创建DAO类可以继承JdbcDaoSupport
类,并且通过JdbcTemplate
对象完成对数据库的操作。
@Repository
public class UserDao extends JdbcDaoSupport {
@Autowired
public UserDao(JdbcTemplate jdbcTemplate) {
setJdbcTemplate(jdbcTemplate);
}
public User findByUsername(String username) {
String sql = "SELECT * FROM user WHERE username=?";
return getJdbcTemplate().queryForObject(sql, new Object[] { username }, new UserRowMapper());
}
}
在上述代码中,我们创建了UserDao
类,并在其中实现了通过用户名查询用户信息的方法。该方法使用了JdbcTemplate
对象来完成对数据库的操作,并通过UserRowMapper
类将查询结果映射为User
对象。
- 创建实体类
在DAO层中,我们需要对象来映射数据库中的表。在代码中,创建实体类即可。
public class User {
private Long id;
private String username;
private String password;
private String email;
// getters & setters
}
在上述代码中,我们创建了User
类,并声明了其属性以及对应的访问方法。
- 编写单元测试
最后,可以编写单元测试来检验代码是否能够正确与数据库进行连接。
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoTest {
@Autowired
private UserDao userDao;
@Test
public void testFindByUsername() {
User user = userDao.findByUsername("admin");
assertNotNull(user);
assertEquals("admin", user.getUsername());
}
}
在上述代码中,我们创建了UserDaoTest
类,并通过@RunWith
注解指定了使用SpringRunner
运行测试,然后通过@SpringBootTest
注解指定了加载的Spring配置文件。在测试方法中,我们使用UserDao
对象进行测试,并通过JUnit断言来检验测试结果是否正确。
示例
下面引用两条具体的实例说明:
示例1
在一个社交平台项目中,我们需要实现与用户账户相关的数据库操作。在该项目中,我们可以创建User
实体类,并在DAO层中实现查询用户密码的方法。
public class User {
private Long id;
private String username;
private String password;
private String email;
// getters & setters
}
@Repository
public class UserDao extends JdbcDaoSupport {
@Autowired
public UserDao(JdbcTemplate jdbcTemplate) {
setJdbcTemplate(jdbcTemplate);
}
public User findByUsername(String username) {
String sql = "SELECT * FROM user WHERE username=?";
return getJdbcTemplate().queryForObject(sql, new Object[] { username }, new UserRowMapper());
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserDaoTest {
@Autowired
private UserDao userDao;
@Test
public void testFindByUsername() {
User user = userDao.findByUsername("admin");
assertNotNull(user);
assertEquals("admin", user.getUsername());
}
}
在上述代码中,我们创建了User
实体类,并实现了UserDao
类,以及对应的JUnit测试方法。在测试方法中,我们使用UserDao
对象进行测试,并通过JUnit断言来检验测试结果是否正确。
示例2
在一个电商项目中,我们需要实现保存用户地址的功能。在该项目中,我们可以创建Address
实体类,并在DAO层中实现保存地址的方法。
public class Address {
private Long id;
private String province;
private String city;
private String district;
private String address;
private Long userId;
// getters & setters
}
@Repository
public class AddressDao extends JdbcDaoSupport {
@Autowired
public AddressDao(JdbcTemplate jdbcTemplate) {
setJdbcTemplate(jdbcTemplate);
}
public void save(Address address) {
String sql = "INSERT INTO address(province, city, district, address, user_id) VALUES (?, ?, ?, ?, ?)";
getJdbcTemplate().update(sql, address.getProvince(), address.getCity(), address.getDistrict(), address.getAddress(), address.getUserId());
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class AddressDaoTest {
@Autowired
private AddressDao addressDao;
@Test
public void testSave() {
Address address = new Address();
address.setProvince("Shanghai");
address.setCity("Shanghai");
address.setDistrict("Pudong");
address.setAddress("Century Avenue");
address.setUserId(1L);
addressDao.save(address);
}
}
在上述代码中,我们创建了Address
实体类,并实现了AddressDao
类,以及对应的JUnit测试方法。在测试方法中,我们使用AddressDao
对象进行测试,并通过JUnit断言来检验测试结果是否正确。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:spring boot项目实战之实现与数据库的连接 - Python技术站