在现代软件开发中,数据库是不可或缺的一部分。Spring JDBC提供了一种简洁的方式来访问数据库,使得开发者可以更加专注于业务逻辑的实现。本文将通过一个具体的实例,展示如何在Spring JDBC应用程序中连接MySQL数据库。
环境准备
在开始之前,确保你已经安装了MySQL数据库服务器。如果尚未安装,可以参考MySQL安装教程进行安装,并创建一个数据库模式以供连接。
创建Spring JDBC应用程序
首先,我们需要创建一个PersonDao
类,它将作为数据访问对象(DAO)来处理与数据库的交互。
@Repository
public class PersonDao implements Dao<Person> {
@Autowired
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert jdbcInsert;
@PostConstruct
private void postConstruct() {
jdbcTemplate = new JdbcTemplate(dataSource);
jdbcInsert = new SimpleJdbcInsert(dataSource)
.withTableName("PERSON").usingGeneratedKeyColumns("ID");
}
public void save(Person person) {
SqlParameterSource parameters = new BeanPropertySqlParameterSource(person);
jdbcInsert.execute(parameters);
}
@Override
public List<Person> loadAll() {
return jdbcTemplate.query("select * from Person", (resultSet, i) -> {
return toPerson(resultSet);
});
}
private Person toPerson(ResultSet resultSet) {
Person person = new Person();
person.setId(resultSet.getLong("ID"));
person.setFirstName(resultSet.getString("FIRST_NAME"));
person.setLastName(resultSet.getString("LAST_NAME"));
person.setAddress(resultSet.getString("ADDRESS"));
return person;
}
}
接下来,定义一个Person
类,用于表示数据库中的PERSON
表。
public class Person {
private long id;
private String firstName;
private String lastName;
private String address;
// Getters and Setters
public static Person create(String firstName, String lastName, String address) {
Person person = new Person();
person.setFirstName(firstName);
person.setLastName(lastName);
person.setAddress(address);
return person;
}
}
然后,创建一个PersonClient
类,用于演示如何使用PersonDao
。
@Component
public class PersonClient {
@Autowired
private Dao<Person> personDao;
public void process() {
Person person = Person.create("Dana", "Whitley", "464 Gorsuch Drive");
System.out.println("saving: " + person);
personDao.save(person);
person = Person.create("Robin", "Cash", "64 Zella Park");
System.out.println("saving: " + person);
personDao.save(person);
List<Person> list = personDao.loadAll();
System.out.println("Loaded all: " + list);
}
}
数据库表创建
在src/main/resources
目录下创建一个createPersonTable.sql
文件,用于创建PERSON
表。
CREATE TABLE PERSON(
ID BIGINT PRIMARY KEY AUTO_INCREMENT,
FIRST_NAME VARCHAR(255),
LAST_NAME VARCHAR(255),
ADDRESS VARCHAR(255)
);
Java配置和主类
最后,我们需要配置数据源,并创建主类来启动应用程序。
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName(com.mysql.jdbc.Driver.class.getName());
ds.setUrl("jdbc:mysql://localhost:3306/my_schema");
ds.setUsername("root");
ds.setPassword("1234");
return ds;
}
}
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
context.getBean(PersonClient.class).process();
}
输出示例
运行上述代码,你将看到类似以下的输出,表明数据已成功保存并加载。
saving: Person{id=0, firstName='Dana', lastName='Whitley', address='464 Gorsuch Drive'}
Loaded all: [Person{id=1, firstName='Dana', lastName='Whitley', address='464 Gorsuch Drive'}, Person{id=2, firstName='Robin', lastName='Cash', address='64 Zella Park'}]
项目依赖和技术
spring-context
4.2.3.RELEASE: Spring Context。spring-jdbc
4.2.3.RELEASE: Spring JDBC。mysql-connector-java
5.1.44: MySQL JDBC Type 4 driver。- JDK 1.8
- Maven 3.3.9
通过这个实例,我们可以看到Spring JDBC提供了一种简单而强大的方式来连接和操作MySQL数据库。这不仅提高了开发效率,还使得代码更加简洁和易于维护。