第八篇 Spring 集成JdbcTemplate

简介: 第八篇 Spring 集成JdbcTemplate

前言

Spring 提供了一个 Spring JDBC 模块,它对 JDBC API 进行了封装,其的主要目的降低 JDBC API 的使用难度,以一种更直接、更简洁的方式使用 JDBC API。

1、导包

spring-beans-5.3.13.RELEASE.jar

spring-context-5.3.13.RELEASE.jar

spring-core-5.3.13.RELEASE.jar

spring-expression-5.3.13.RELEASE.jar

commons-logging-1.2.jar

spring-jdbc-5.3.13.RELEASE.jar

spring-tx-5.3.13.RELEASE.jar

spring-aop-5.3.13.jar

mysql-connector-java-8.0.23.jar

备注:自行去Maven资源库搜 -> https://mvnrepository.com/

JdbcTemplate 提供的方法以及说明

2、案例

2.1、创建表

CREATE TABLE
IF NOT EXISTS house_info (
id BIGINT PRIMARY KEY auto_increment COMMENT '主键',
NAME VARCHAR (50) COMMENT '房屋名称',
type VARCHAR (50) COMMENT '房屋类型',
address VARCHAR (50) COMMENT '房屋地址'
) COMMENT '房屋信息表';

2.2、创建连接数据库配置文件jdbc.properties(目标src)

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring
jdbc.username=root
jdbc.password=root

2.3、创建配置文件house.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    <!--开启组建扫描-->
    <context:component-scan base-package="com.xxxx.spring"/>
    <!--引入jdbc.properties 配置-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
    </bean>
    <bean id = "jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
</beans>

2.4、定义HouseInfo实体bean

package com.xxxx.spring.entity;
/**
 * 房屋信息
 */
public class HouseInfo {
    /**
     * 房屋名称
     */
    private String name;
    /**
     * 房屋类型
     */
    private String type;
    /**
     * 房屋地址
     */
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        return "HouseInfo{" +
                "name='" + name + '\'' +
                ", type='" + type + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

2.5、定义dao

package com.xxxx.spring.dao;
import com.xxxx.spring.entity.HouseInfo;
import java.util.List;
/**
 * 房屋信息DAO类
 */
public interface HouseInfoDAO {
    /**
     * 新增房屋信息
     * @param houseInfo
     * @return
     */
    public int insertHouseInfo(HouseInfo houseInfo);
    /**
     * 修改房屋信息
     * @param houseInfo
     * @return
     */
    public int updateHouseInfo(HouseInfo houseInfo);
    /**
     * 删除房屋信息
     * @param houseInfo
     * @return
     */
    public int deleteHouseInfo(HouseInfo houseInfo);
    /**
     * 查询房屋信息列表
     * @param houseInfo
     * @return
     */
    public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo);
    /**
     * 获取房屋信息对象
     * @param houseInfo
     * @return
     */
    public HouseInfo getHouseInfo(HouseInfo houseInfo);
    /**
     * 批量插入房屋信息
     * @param batchArgs
     */
    public void batchInsertHouseInfo(List<Object[]> batchArgs);
}
package com.xxxx.spring.dao.impl;
import com.xxxx.spring.dao.HouseInfoDAO;
import com.xxxx.spring.entity.HouseInfo;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.annotation.Resource;
import java.util.List;
public class HouseInfoDAOImpl implements HouseInfoDAO {
    @Resource
    private JdbcTemplate jdbcTemplate;
    @Override
    public int insertHouseInfo(HouseInfo houseInfo) {
        String sql = " INSERT INTO house_info (NAME, type, address) " +
                " VALUES " +
                " (?,?,?) ";
        return this.jdbcTemplate.update(sql,houseInfo.getName(),houseInfo.getType(),houseInfo.getAddress());
    }
    @Override
    public int updateHouseInfo(HouseInfo houseInfo) {
        String sql = "UPDATE house_info set address =? where name=?";
        return this.jdbcTemplate.update(sql,houseInfo.getAddress(),houseInfo.getName());
    }
    @Override
    public int deleteHouseInfo(HouseInfo houseInfo) {
        String sql = "delete from  house_info where name=?";
        return this.jdbcTemplate.update(sql,houseInfo.getName());
    }
    @Override
    public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) {
        String sql = "select * from house_info where type=?";
        return this.jdbcTemplate.query(sql,new BeanPropertyRowMapper<HouseInfo>(HouseInfo.class),houseInfo.getType());
    }
    @Override
    public HouseInfo getHouseInfo(HouseInfo houseInfo) {
        String  sql = "select * from house_info where id=?";
        return this.jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<HouseInfo>(HouseInfo.class),houseInfo.getId());
    }
    @Override
    public void batchInsertHouseInfo(List<Object[]> batchArgs) {
        String sql = "INSERT INTO house_info (NAME, type, address) " +
                "VALUES " +
                " (?,?,?) ";
        this.jdbcTemplate.batchUpdate(sql,batchArgs);
    }
}

2.6、定义service

package com.xxx.spring.service;
import com.xxx.spring.entity.HouseInfo;
import java.util.List;
/**
 * 房屋信息DAO类
 */
public interface HouseInfoService {
    /**
     * 新增房屋信息
     * @param houseInfo
     * @return
     */
    public int insertHouseInfo(HouseInfo houseInfo);
    /**
     * 修改房屋信息
     * @param houseInfo
     * @return
     */
    public int updateHouseInfo(HouseInfo houseInfo);
    /**
     * 删除房屋信息
     * @param houseInfo
     * @return
     */
    public int deleteHouseInfo(HouseInfo houseInfo);
    /**
     * 查询房屋信息列表
     * @param houseInfo
     * @return
     */
    public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo);
    /**
     * 获取房屋信息对象
     * @param houseInfo
     * @return
     */
    public HouseInfo getHouseInfo(HouseInfo houseInfo);
    /**
     * 批量插入房屋信息
     * @param batchArgs
     */
    public void batchInsertHouseInfo(List<Object[]> batchArgs);
}
package com.xxxx.spring.service.impl;
import com.xxxx.spring.dao.HouseInfoDAO;
import com.xxxx.spring.entity.HouseInfo;
import com.xxxx.spring.service.HouseInfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service("houseInfoService")
public class HouseInfoServiceImpl implements HouseInfoService {
    @Resource
    private HouseInfoDAO houseInfoDAO;
    @Override
    public int insertHouseInfo(HouseInfo houseInfo) {
        return this.houseInfoDAO.insertHouseInfo(houseInfo);
    }
    @Override
    public int updateHouseInfo(HouseInfo houseInfo) {
        return this.houseInfoDAO.updateHouseInfo(houseInfo);
    }
    @Override
    public int deleteHouseInfo(HouseInfo houseInfo) {
        return this.houseInfoDAO.deleteHouseInfo(houseInfo);
    }
    @Override
    public List<HouseInfo> selectHouseInfoList(HouseInfo houseInfo) {
        return this.houseInfoDAO.selectHouseInfoList(houseInfo);
    }
    @Override
    public HouseInfo getHouseInfo(HouseInfo houseInfo) {
        return this.houseInfoDAO.getHouseInfo(houseInfo);
    }
    @Override
    public void batchInsertHouseInfo(List<Object[]> batchArgs) {
        this.houseInfoDAO.batchInsertHouseInfo(batchArgs);
    }
}

2.7、测试

public static void main(String[] args) {
    ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("house.xml");
    HouseInfoService houseInfoService = classPathXmlApplicationContext.getBean("houseInfoService", HouseInfoService.class);
    HouseInfo houseInfo = new HouseInfo();
    houseInfo.setName("雪山飞狐");
    houseInfo.setType("三房一厅");
    houseInfo.setAddress("深圳市");
    houseInfoService.insertHouseInfo(houseInfo);
}


目录
相关文章
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
138 1
|
15天前
|
XML Java API
Spring Boot集成MinIO
本文介绍了如何在Spring Boot项目中集成MinIO,一个高性能的分布式对象存储服务。主要步骤包括:引入MinIO依赖、配置MinIO属性、创建MinIO配置类和服务类、使用服务类实现文件上传和下载功能,以及运行应用进行测试。通过这些步骤,可以轻松地在项目中使用MinIO的对象存储功能。
|
17天前
|
消息中间件 Java Kafka
什么是Apache Kafka?如何将其与Spring Boot集成?
什么是Apache Kafka?如何将其与Spring Boot集成?
48 5
|
20天前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
32 1
|
20天前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
41 0
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
169 1
|
2月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
375 11
|
2月前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
117 0
|
4月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】