第八篇 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 BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
190 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
4月前
|
XML 人工智能 Java
Spring Boot集成Aviator实现参数校验
Aviator是一个高性能、轻量级的Java表达式求值引擎,适用于动态表达式计算。其特点包括支持多种运算符、函数调用、正则匹配、自动类型转换及嵌套变量访问,性能优异且依赖小。适用于规则引擎、公式计算和动态脚本控制等场景。本文介绍了如何结合Aviator与AOP实现参数校验,并附有代码示例和仓库链接。
306 0
|
4月前
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
741 0
|
4月前
|
消息中间件 存储 Java
第15课: Spring Boot中集成ActiveMQ
第15课: Spring Boot中集成ActiveMQ
465 0
|
5月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
624 0
|
8月前
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
445 0
|
8月前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
330 0
|
2月前
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
252 0
|
4月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
408 3

热门文章

最新文章