下面将详细讲解Spring连接MySQL数据库的全过程,包含以下步骤:
1. 引入MySQL JDBC驱动
首先,我们需要在项目中引入MySQL JDBC驱动,由于MySQL JDBC驱动是Maven Central库中最受欢迎的库之一,因此我们可以通过在项目的pom.xml文件中加入以下代码来引入MySQL JDBC驱动:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
2. 创建数据源
在Spring中,我们可以使用数据源连接池来连接MySQL数据库,而连接池是通过数据源管理的。因此,我们需要配置数据源,以便在运行时创建连接池。
这里以使用HikariCP数据源配置MySQL数据库为例。在Spring Boot项目中,我们只需在application.yml或application.properties文件中添加以下配置即可:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
username: root
password: root1234
driver-class-name: com.mysql.cj.jdbc.Driver
该配置中,我们使用了MySQL官方提供的JDBC驱动com.mysql.cj.jdbc.Driver,指定了MySQL实例的地址、端口、数据库名等信息,同时指定了数据库的字符集为utf8,并将时区设置为GMT+8。
3. 创建数据访问对象
通过Spring的JDBC模板来与MySQL数据库进行交互,我们需要创建一个数据访问对象(DAO)。这个DAO应该包含所有针对MySQL数据表的数据访问接口,例如数据库插入操作、查询操作、更新操作等。
这里我们以一个简单的用户管理场景为例来说明,创建一个用户DAO的Java接口:
public interface UserDao {
void add(User user);
User getById(int id);
List<User> getAll();
void update(User user);
void delete(int id);
}
然后,我们实现该接口的具体实现类:
@Repository
public class UserDaoImpl implements UserDao {
private final JdbcTemplate jdbcTemplate;
@Autowired
public UserDaoImpl(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@Override
public void add(User user) {
jdbcTemplate.update(
"INSERT INTO users (name, password, age) VALUES (?, ?, ?)",
user.getName(),
user.getPassword(),
user.getAge()
);
}
@Override
public User getById(int id) {
return jdbcTemplate.queryForObject(
"SELECT * FROM users WHERE id = ?",
new Object[]{id},
new UserRowMapper()
);
}
@Override
public List<User> getAll() {
return jdbcTemplate.query(
"SELECT * FROM users",
new UserRowMapper()
);
}
@Override
public void update(User user) {
jdbcTemplate.update(
"UPDATE users SET name = ?, password = ?, age = ? WHERE id = ?",
user.getName(),
user.getPassword(),
user.getAge(),
user.getId()
);
}
@Override
public void delete(int id) {
jdbcTemplate.update(
"DELETE FROM users WHERE id = ?",
id
);
}
}
这里我们使用JdbcTemplate来执行MySQL数据库操作。在构造函数中通过@Autowired注入JdbcTemplate实例,并使用@Repository注解将其声明为Bean。
4. 编写JDBC RowMapper
我们需要编写一个JDBC RowMapper用于将查询操作中返回的结果集中的每行映射为Java对象。在这个例子中,我们使用了User对象作为例子。以下是一个简单的UserRowMapper实现:
public class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setPassword(rs.getString("password"));
user.setAge(rs.getInt("age"));
return user;
}
}
5. 使用JdbcTemplate进行数据访问
最后,我们可以在Controller中通过注入DAO实例,使用其提供的方法来访问MySQL数据库。以下是一个简单的UserController实现:
@RestController
public class UserController {
private final UserDao userDao;
@Autowired
public UserController(UserDao userDao) {
this.userDao = userDao;
}
@PostMapping("/user")
public void addUser(@RequestBody User user) {
userDao.add(user);
}
@GetMapping("/user/{id}")
public User getUserById(@PathVariable int id) {
return userDao.getById(id);
}
@GetMapping("/user")
public List<User> getAllUsers() {
return userDao.getAll();
}
@PutMapping("/user")
public void updateUser(@RequestBody User user) {
userDao.update(user);
}
@DeleteMapping("/user/{id}")
public void deleteUser(@PathVariable int id) {
userDao.delete(id);
}
}
以上就是Spring连接MySQL数据库全过程的攻略。下面是两个使用该方法连接MySQL数据库的完整示例:
示例一:使用Spring Boot连接MySQL数据库
该示例使用Spring Boot框架连接MySQL数据库,实现了一个简单的用户管理模块。GitHub代码链接:https://github.com/wx-chevalier/Spring-Boot-Examples/tree/master/spring-boot-demo-sql-jdbc
示例二:使用Spring Framework连接MySQL数据库
该示例使用Spring Framework框架连接MySQL数据库,实现了一个简单的学生管理模块。GitHub代码链接:https://github.com/wx-chevalier/SpringExamples/tree/master/spring-transaction-example/src/main/java/com/wx/spring/transaction
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring连接Mysql数据库全过程 - Python技术站