使用Spring连接mysql数据库

使用Spring连接数据库



前言

这篇文章主要介绍了Spring通过DataSource类连接数据库,通过JdbcTemplate类操作数据库的的步骤。并结合以上内容,辅以Spring的IOC特性练习一个脱离前端的物流管理小项目。

物流管理
数据库中的条目:
物流单号(数字类型)、物流公司(varchar)、物流状态(char)
目标:实现增删改查

具体操作

①创建maven项目,导入相关依赖

在使用连接数据库的过程中,我们需要导入的maven依赖包括:Spring Web MvcSpring JDBCMySQL Connector/J,除了这些之外,还可以导入Junit以便我们进行测试。

旁注:
这里可能有人会疑惑,我们不是要开发Web项目,为啥要导入Spring Web。这么做主要的原因是Spring Web包含了Spring框架的大部分包,包括core、beans啥的,直接导入web包比较方便省事。

这是我导包完成后的pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>transmit</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.0</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        
    </dependencies>

</project>

②搭建项目的包结构

在dao层放操作数据库的类,pojo中创建快递的相关信息,spring配置文件放在resources包下。
包结构

③创建快递类

编写Courier类

快递类包含每件快递的信息:快递单号、物流公司、物流状态。并且,这些属性要和数据库中的对应相同。

package com.just.pojo;

/**
 * @author Crisp
 * @date 2021/4/11
 */
public class Courier {
	/**
     * id : 物流单号
     * deliverCompany : 物流公司
     * status : 物流状态
     */
    int id;
    String deliverCompany;
    String status;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDeliverCompany() {
        return deliverCompany;
    }

    public void setDeliverCompany(String deliverCompany) {
        this.deliverCompany = deliverCompany;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Courier{" +
                "id=" + id +
                ", deliverCompany='" + deliverCompany + '\'' +
                ", status='" + status + '\'' +
                '}';
    }
}
配置Courier的bean

让我们来使用spring创建几个对象看看。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean name="courier01" class="com.just.pojo.Courier">
    	<property name="id" value="1"/>
        <property name="deliverCompany" value="中通"/>
        <property name="status" value="包裹正在揽收"/>
    </bean>

    <bean name="courier02" class="com.just.pojo.Courier">
    	<property name="id" value="2"/>
        <property name="deliverCompany" value="申通"/>
        <property name="status" value="请到49栋车库领取快递"/>
    </bean>

    <bean name="courier03" class="com.just.pojo.Courier">
    	<property name="id" value="3"/>
        <property name="deliverCompany" value="韵达"/>
        <property name="status" value="包裹已抵达上海,预计明天送达"/>
    </bean>
</beans>

Courier类的测试类:放在test包的同样命名文件下

package com.just.pojo;

import org.junit.Test;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author Crisp
 * @date 2021/4/11
 */
public class CourierTest {
    @Test
    public void courierTest() {
        
        //加载bean配置文件
        ConfigurableApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");

        //获取Courier对象
        Courier courier01 = (Courier)context.getBean("courier01");

        System.out.println(courier01.getStatus());
    }
}
建mysql表

然后在数据库中创建储存物流信息的表,我这边使用的是mysql数据库:
数据库建表

④使用DataSource连接数据库

bean配置连接数据库

接下来,我们就要连接数据库并编写查询语句了。
首先是配置bean,在连接数据库的过程中,我们需要用到DataSource对象和JdbcTemplate对象。

<!--配置DataSource-->
<bean name="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" 
    value="jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&amp;serverTimezone=UTC%2B8"/>
    <property name="username" value="****"/>
    <property name="password" value="****"/>
</bean>
<!--配置JdbcTemplate-->
<bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>
编写增删改查代码

然后在dao层编写增删改查代码:
首先定义接口规范

package com.just.dao;

import com.just.pojo.Courier;

import java.util.List;
import java.util.Map;

/**
 * @author Crisp
 * @date 2021/4/11
 */
public interface CourierDao {
    /**
     * 添加一则快递信息
     * @param courier 添加的快递信息
     * @return 数据库更改的条数
     */
    int addCourier(Courier courier);

    /**
     * 删除一则快递信息
     * @param courier 需要删除的快递
     * @return 数据库更改的条目数量
     */
    int deleteCourier(Courier courier);

    /**
     * 更新一则快递信息
     * @param courier 需要更新的快递信息
     * @return 数据库更新的条目数量
     */
    int updateCourier(Courier courier);

    /**
     * 获取数据库中所有的快递信息
     * @return 所有快递信息键值对组成的列表
     */
    List<Map<String, Object>> allCourier();
}

然后编写实现类:
每个方法具体的作用和之前接口中写的如出一辙,所以就不再添加注释了。

package com.just.dao.impl;

import com.just.dao.CourierDao;
import com.just.pojo.Courier;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;

/**
 * @author Crisp
 * @date 2021/4/11
 */
public class CourierDaoImpl implements CourierDao {


    JdbcTemplate jdbcTemplate;
    @Override
    public int addCourier(Courier courier) {
        String sql = "insert courier(id, com, status) values(?, ?, ?)";
        return jdbcTemplate.update(sql, courier.getId(), courier.getDeliverCompany(), courier.getStatus());
    }

    @Override
    public int deleteCourier(Courier courier) {
        String sql = "delete from courier where id = ?";
        return jdbcTemplate.update(sql, courier.getId());
    }

    @Override
    public int updateCourier(Courier courier) {
        String sql = "update courier set com = ?, status = ? where id = ?";
        return jdbcTemplate.update(sql, courier.getDeliverCompany(), courier.getStatus(), courier.getId());
    }

    @Override
    public List<Map<String, Object>> allCourier() {
        String sql = "select * from courier";
        return jdbcTemplate.queryForList(sql);
    }

    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }

    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
}

编写完成后,配置bean

<bean name="courierDao" class="com.just.dao.impl.CourierDaoImpl">
    <property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
测试功能

到这里,我们的业务逻辑就算完成了,接下来就是测试各种方法的功能了。

add测试
/**
 * 添加测试
 */
@Test
public void addTest() {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    CourierDaoImpl courierDao = (CourierDaoImpl)context.getBean("courierDao");
    Courier courier = (Courier)context.getBean("courier03");
    System.out.println("添加" + courierDao.addCourier(courier));
}

添加后

delete测试
/**
 * 删除测试
 */
@Test
public void delTest() {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    CourierDaoImpl courierDao = (CourierDaoImpl)context.getBean("courierDao");
    Courier courier = (Courier)context.getBean("courier03");
    System.out.println("删除" + courierDao.deleteCourier(courier));
}

删除之后

update测试

/**
 * 更新测试
 */
@Test
public void updateTest() {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    CourierDaoImpl courierDao = (CourierDaoImpl)context.getBean("courierDao");
    Courier courier = (Courier)context.getBean("courier03");
    courier.setDeliverCompany("圆通");
    System.out.println("更新" + courierDao.updateCourier(courier));
}

更改之后

list测试
    /**
     * 列出所有物流信息
     */
    @Test
    public void listTest() {
        ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        CourierDaoImpl courierDao = (CourierDaoImpl)context.getBean("courierDao");
        System.out.println(courierDao.allCourier());
    }

物流信息

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Spring配置连接mysql数据库的方法。在编写的过程中,可以明显的感受到Spring使我们的代码精简了许多。

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供关于使用Spring Boot连接MySQL数据库的一些基本信息和步骤。 首先,您需要在您的Spring Boot项目中添加MySQL连接器的依赖。可以在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>{MySQL版本号}</version> </dependency> ``` 请确保将 {MySQL版本号} 替换为您正在使用MySQL版本号。 接下来,您需要在application.properties文件中配置数据库连接信息。例如: ``` spring.datasource.url=jdbc:mysql://localhost:3306/{数据库名}?useSSL=false&serverTimezone=UTC spring.datasource.username={用户名} spring.datasource.password={密码} spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 请将 {数据库名}、{用户名} 和 {密码} 替换为您的MySQL数据库的实际信息。 最后,您可以通过使用Spring Data JPA或MyBatis等持久化框架来访问数据库。例如,您可以创建一个Person实体类,并使用JPA注解来映射到数据库中的表: ``` @Entity @Table(name = "person") public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // 省略getter和setter方法 } ``` 然后,您可以创建一个PersonRepository接口来访问数据库中的Person表: ``` @Repository public interface PersonRepository extends JpaRepository<Person, Long> { } ``` 现在,您可以使用PersonRepository接口中提供的方法来访问数据库中的数据了,例如: ``` @Autowired private PersonRepository personRepository; public void savePerson(Person person) { personRepository.save(person); } public List<Person> getAllPeople() { return personRepository.findAll(); } ``` 以上就是使用Spring Boot连接MySQL数据库的一些基本信息和步骤。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值