使用JdbcTemplate对MySQL数据库进行增删改查(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 使用JdbcTemplate对MySQL数据库进行增删改查(上)

0x00 教程内容


Spring配置文件的编写

JDBCTemplate访问接口代码的实现

测试

增删改完整代码

紧接着上一篇教程的基础:Spring之Bean的依赖注入(基于XML),这一篇文章继续来操作对数据库的访问,只不过这次是使用Spring里面的JdbcTemplate,其实也是非常简单的。


0x01 Spring配置文件的编写


1. 引入依赖

如果上一教程已经引入过了,则忽略此步骤:

<!-- Spring JDBC依赖包 -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.2.4.RELEASE</version>
</dependency>
<!-- Spring context依赖 -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.4.RELEASE</version>
</dependency>


2. 注入dataSource

注入 dataSourcejdbcTemplate

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql:///sny"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
</bean>


如果不知道需要设置什么property,可以按住 ctrl 然后点击 DriverManagerDataSource进入需要设置什么属性值。


0x02 新建JDBCTemplate访问接口


1. 新建实现类

新建类 StudentDAOJdbcTemplateImpl 实现 StudentDAO 接口,然后加入JDBCTemplate属性,并且生成 get 和 set 方法 (至少需要有 set 方法):


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


image.png


2. 注入 jdbcTemplate

写好之后,需要在Spring配置文件里注入进来,以供后面测试时直接从IoC容器中获取:

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>


注意:这里是用了 ref ,表示设置的属性值来自于上面注入的bean,对应的是id。


3. 编写jdbcTemplate访问代码

编写实现StudentDAO里面的查询接口的代码:

@Override
public List<Student> getStudentList() {
final List<Student> studentList = new ArrayList<>();
    String sql = "select id,name,age from student";
    jdbcTemplate.query(sql, new RowCallbackHandler() {
        @Override
        public void processRow(ResultSet resultSet) throws SQLException {
            Student student = new Student();
            student.setId(resultSet.getInt("id"));
            student.setName(resultSet.getString("name"));
            student.setAge(resultSet.getInt("age"));
            studentList.add(student);
        }
    });
    return studentList;
}


微信图片_20220619184427.png


4. 注入接口实现类

<bean id="studentDAO" class="com.shaonaiyi.dao.StudentDAOJdbcTemplateImpl">

   <property name="jdbcTemplate" ref="jdbcTemplate"/>

</bean>


注意:这里是用了 ref ,对应的是上面配置的 jdbcTemplate。


0x03 测试



1. 新建测试类

image.png


完整代码如下:

package com.shaonaiyi.dao;
import com.shaonaiyi.domain.Student;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
/**
 * @Auther: shaonaiyi@163.com
 * @Date: 2021/1/16 15:43
 * @Description: JDBCTemplate方式对数据库进行访问
 */
public class StudentDAOJdbcTemplateImplTest {
    private ApplicationContext applicationContext = null;
    private StudentDAO studentDAO = null;
    @Before
    public void before() {
        applicationContext = new ClassPathXmlApplicationContext("spring.xml");
        studentDAO = (StudentDAO) applicationContext.getBean("studentDAO");
    }
    @After
    public void after() {
        applicationContext = null;
    }
    @Test
    public void testGetStudentList() {
        List<Student> studentList = studentDAO.getStudentList();
        for (Student student : studentList) {
            System.out.println("---------------------");
            System.out.println("学生id:" + student.getId());
            System.out.println("学生名称:" + student.getName());
            System.out.println("学生年龄:" + student.getAge());
        }
    }
}


代码解读:从IoC容器中获取 studentDAO对象,然后调用查询接口,将结果查询出来。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
83 13
|
26天前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
79 12
|
2月前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
83 20
|
3月前
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
45 1
|
3月前
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
150 5
|
3月前
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
54 5
|
3月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
81 1
|
3月前
|
关系型数据库 MySQL
MySQL表的增删改查(基础篇详细详解)
MySQL表的增删改查(基础篇详细详解)
64 5
|
3月前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
173 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
3月前
|
JavaScript 前端开发 测试技术
[新手入门]todolist增删改查:vue3+ts版本!
【10月更文挑战第15天】[新手入门]todolist增删改查:vue3+ts版本!