Spring JDBC与MySQL数据库连接实战

在现代软件开发中,数据库是不可或缺的一部分。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数据库。这不仅提高了开发效率,还使得代码更加简洁和易于维护。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

t0_54coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值