JdbcTemplate的基本使用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: JdbcTemplate的基本使用

文章目录

@TOC


一、JdbcTemplate的开发步骤

在这里插入图片描述

1.导入坐标

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <dependency>

2.创建数据表和实体类

j_account数据表
在这里插入图片描述

package com.study.domain;

public class Account {
    private String name;
    private double money;

    public Account() {
    }

    public Account(String name, double money) {
        this.name = name;
        this.money = money;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Account{" +
                "name='" + name + '\'' +
                ", money=" + money +
                '}';
    }
}

3.创建JdbcTemplate对象及操作数据库

package com.study.test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.core.JdbcTemplate;

import java.beans.PropertyVetoException;

public class JdbcTemplateTest {

   @Test
    public void test() throws PropertyVetoException {
       //创建数据源对象
       ComboPooledDataSource dataSource = new ComboPooledDataSource();
       dataSource.setDriverClass("com.mysql.jdbc.Driver");
       dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/spring");
       dataSource.setUser("root");
       dataSource.setPassword("root");

       JdbcTemplate jdbcTemplate = new JdbcTemplate();
       //设置数据源对象,知道数据库在哪
       jdbcTemplate.setDataSource(dataSource);
       //执行操作需
       int row = jdbcTemplate.update("insert into j_account values(?,?)", "jack", 4500.0);
       System.out.println(row);


   }
}

二、Spring产生JdbcTemplate对象

将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模板对象中。

1.配置

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring"></property>
        <property name="user" value="root"></property>
        <property name="password" value="root"></property>
    </bean>
   <!-- jdbc模板对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

2.操作数据库

 @Test
   public void test1() throws PropertyVetoException {
      ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
      JdbcTemplate jdbcTemplate = app.getBean(JdbcTemplate.class);
      int row = jdbcTemplate.update("insert into j_account values(?,?)", "jery", 4500.0);
      System.out.println(row);


   }

三、Spring产生JdbcTemplate对象(抽取jdbc.properties)

1.jdbc.properties

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

2.加载jdbc.properties

 <!--加载jdbc.properties-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
     <!-- 数据源对象-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
   <!-- jdbc模板对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

四、基本操作

package com.study.test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class JdbcTemplateCRUDTest {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Test
    public void test(){
        jdbcTemplate.update("update j_account set money=? where name=?",23456.0,"tom");
    }
     @Test
    public void testDelete(){
        jdbcTemplate.update("delete from j_account  where name=?","tom");
    }
     @Test
    public void testQueryAll(){
        List<Account> query = jdbcTemplate.query("select * from j_account", new BeanPropertyRowMapper<Account>(Account.class));
        System.out.println(query);  //[Account{name='jack', money=4500.0}, Account{name='jery', money=4500.0}]
    }
     @Test
    public void testQueryOne(){
        Account jack = jdbcTemplate.queryForObject("select * from j_account where name=?", new BeanPropertyRowMapper<Account>(Account.class), "jack");
        System.out.println(jack);  //Account{name='jack', money=4500.0}
    }
    @Test
    public void testQueryCount(){
        Long account = jdbcTemplate.queryForObject("select count(*) from j_account ", Long.class);
        System.out.println(account);  //2

    }
}
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
SQL 机器学习/深度学习 分布式计算
Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
|
8月前
|
人工智能 Java 程序员
一文彻底搞定C语言的表达式和语句
本文介绍了C语言中的表达式和语句,涵盖算术、关系等表达式及各类语句的用法,帮助初学者理解核心概念。本文介绍C语言表达式(算术、关系等)和语句(表达式、复合、控制、函数、空语句),助你掌握核心概念。
405 0
一文彻底搞定C语言的表达式和语句
|
11月前
|
Java API 数据库
Java 反射机制:动态编程的 “魔法钥匙”
Java反射机制是允许程序在运行时访问类、方法和字段信息的强大工具,被誉为动态编程的“魔法钥匙”。通过反射,开发者可以创建更加灵活、可扩展的应用程序。
248 3
|
XML 安全 Shell
SSH 密码暴力破解及防御实战_2 | 学习笔记
快速学习 SSH 密码暴力破解及防御实战_2
805 0
SSH 密码暴力破解及防御实战_2 | 学习笔记
|
12月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
|
存储 算法
USB3.2 摘录(10)
USB3.2 摘录(10)
184 1
【简洁】三步开启QQ邮箱SMTP服务并获取授权码
【简洁】三步开启QQ邮箱SMTP服务并获取授权码
|
SQL 设计模式 存储
【MySQL】一文搞懂MySQL语法(进阶)
本文讲述了SQL语法一些进阶内容,全文3.4w字,都是一句一句话指导,相信用心看,肯定会有收获的,需要哪一部分的内容,点击目录即可跳转
630 0
【MySQL】一文搞懂MySQL语法(进阶)
|
存储 关系型数据库 MySQL
RBAC表结构设计
在权限系统中,最核心的三张表为:用户表、角色表和菜单表(权限表),它们间的关系通常采用经典的 RBAC(Role-Based Access Control,基于角色的访问控制)模型。简单来说就是一个用户拥有若干角色,每一个角色拥有若干权限。这样就构造成 “用户-角色-权限” 的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多的关系,如下图所示:
1486 0
|
数据采集 前端开发 JavaScript
Selenium和PhantomJS:模拟用户在浏览器中的操作
Selenium和PhantomJS:模拟用户在浏览器中的操作
Selenium和PhantomJS:模拟用户在浏览器中的操作