Spring JDBC模板
Spring JDBC模板(JdbcTemplate)是Spring框架提供的一个简化JDBC操作的工具类。它封装了JDBC的常见操作,如查询、更新、插入和删除等,简化了数据库访问代码,减少了样板代码。下面是一个详细的示例,展示如何使用Spring JDBC模板进行数据库操作。
核心概念
- JdbcTemplate:Spring提供的一个工具类,用于简化JDBC操作。
- DataSource:数据源,用于获取数据库连接。
- RowMapper:用于将结果集的每一行映射到一个Java对象。
示例代码
1. 配置数据源和JdbcTemplate
首先,我们需要配置数据源和JdbcTemplate。可以使用Spring的Java配置类来完成。
package com.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("username");
dataSource.setPassword("password");
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
2. 定义实体类
定义一个实体类,用于映射数据库表中的数据。
package com.example.model;
public class User {
private int id;
private String name;
private String email;
// Getters and setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
3. 定义DAO类
定义一个DAO类,使用JdbcTemplate进行数据库操作。
package com.example.dao;
import com.example.model.User;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Repository
public class UserDao {
private final JdbcTemplate jdbcTemplate;
public UserDao(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
// 插入用户
public void addUser(User user) {
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(sql, user.getName(), user.getEmail());
}
// 查询所有用户
public List<User> getAllUsers() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, new UserRowMapper());
}
// 根据ID查询用户
public User getUserById(int id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new UserRowMapper(), id);
}
// 更新用户
public void updateUser(User user) {
String sql = "UPDATE users SET name = ?, email = ? WHERE id = ?";
jdbcTemplate.update(sql, user.getName(), user.getEmail(), user.getId());
}
// 删除用户
public void deleteUser(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}
// RowMapper实现类
private static 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.setEmail(rs.getString("email"));
return user;
}
}
}
4. 测试类
定义一个测试类,演示如何使用UserDao进行数据库操作。
package com.example;
import com.example.config.AppConfig;
import com.example.dao.UserDao;
import com.example.model.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.List;
public class Main {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
UserDao userDao = context.getBean(UserDao.class);
// 添加用户
User user = new User();
user.setName("John Doe");
user.setEmail("john.doe@example.com");
userDao.addUser(user);
// 查询所有用户
List<User> users = userDao.getAllUsers();
for (User u : users) {
System.out.println("User ID: " + u.getId() + ", Name: " + u.getName() + ", Email: " + u.getEmail());
}
// 根据ID查询用户
User userById = userDao.getUserById(1);
System.out.println("User ID: " + userById.getId() + ", Name: " + userById.getName() + ", Email: " + userById.getEmail());
// 更新用户
userById.setName("Jane Doe");
userById.setEmail("jane.doe@example.com");
userDao.updateUser(userById);
// 删除用户
userDao.deleteUser(1);
}
}
详细解释
-
配置数据源和JdbcTemplate:
AppConfig
类使用@Configuration
注解定义为一个配置类。dataSource
方法配置了数据源,使用DriverManagerDataSource
连接到MySQL数据库。jdbcTemplate
方法创建了一个JdbcTemplate
实例,并注入了数据源。
-
定义实体类:
User
类是一个简单的Java类,包含id
、name
和email
属性,以及相应的getter和setter方法。
-
定义DAO类:
UserDao
类使用JdbcTemplate
进行数据库操作。addUser
方法插入一个新用户。getAllUsers
方法查询所有用户。getUserById
方法根据ID查询用户。updateUser
方法更新用户信息。deleteUser
方法删除用户。UserRowMapper
是一个内部类,实现了RowMapper
接口,用于将结果集的每一行映射到User
对象。
-
测试类:
Main
类通过AnnotationConfigApplicationContext
加载AppConfig
配置,并获取UserDao
的实例。- 演示了如何使用
UserDao
进行添加、查询、更新和删除用户的操作。
通过这种方式,Spring JDBC模板简化了JDBC操作,使代码更加简洁和易于维护。
原文地址:https://blog.csdn.net/yuehua00/article/details/143588612
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!