Spring学习-5-JdbcTemplate数据库操作

2023-11-07

针对数据库的操作,Spring框架提供了JdbcTemplate类,该类是Spring框架数据抽象层的基础。可以说,JdbcTemplate类是Spring JDBC的核心类。   

在JdbcTemplate核心类中,提供了大量的更新和查询数据库的方法,我们就是使用的这些方法来操作数据库的。

主要方法:

execute()
execute(String sql)方法可用于执行sql语句

update()
update()用于执行插入、更新和删除操作

query()
query()用于执行数据查询操作

update常用方法:

int update(String sql) 该方法是最简单的update方法重载形式你,直接执行传入的sql语句,并返回受影响的行数
int update(PreparedStatementCreator psc) 该方法执行从 PreparedStatementCreator 返回的语句,并返回受影响的行数
int update(String sql,PreparedStatementSetter pss) 该方法通过PreparedStatementSetter设置Sql语句的参数,并返回受影响的行数
int update(String sql,Object ....args) 该方法使用Object 设置SQL中的参数,要求参数不能为NULL,并返回受影响的行数

实例:

   // 更新账户
    public int updateAccount(Account account) {
        // 定义SQL
        String sql = "update account set username=?,balance=? where id = ?";
        // 定义数组来存放SQL语句中的参数
        Object[] params = new Object[] { 
                               account.getUsername(), 
                               account.getBalance(), 
                               account.getId() 
          };
        // 执行添加操作,返回的是受SQL语句影响的记录条数
        int num = this.jdbcTemplate.update(sql, params);
        return num;
    }
// 删除账户
	public int deleteAccount(int id) {
		// 定义SQL
		String sql = "delete  from account where id = ? ";
		// 执行添加操作,返回的是受SQL语句影响的记录条数
		int num = this.jdbcTemplate.update(sql, id);
		return num;
	}
// 通过id查询账户数据信息
    public Account findAccountById(int id) {
        //定义SQL语句
        String sql = "select * from account where id = ?";
        // 创建一个新的BeanPropertyRowMapper对象
        RowMapper<Account> rowMapper = 
    new BeanPropertyRowMapper<Account>(Account.class);
        // 将id绑定到SQL语句中,并通过RowMapper返回一个Object类型的单行记录
        return this.jdbcTemplate.queryForObject(sql, rowMapper, id);
    }
    // 查询所有账户信息
    public List<Account> findAllAccount() {
        // 定义SQL语句
        String sql = "select * from account";
        // 创建一个新的BeanPropertyRowMapper对象
        RowMapper<Account> rowMapper = 
    new BeanPropertyRowMapper<Account>(Account.class);
        // 执行静态的SQL查询,并通过RowMapper返回结果
        return this.jdbcTemplate.query(sql, rowMapper);
    }

aplicationContext.xml

<!-- 1配置数据源 -->
    <bean id="dataSource" class=
     "org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!--数据库驱动 -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <!--连接数据库的url -->
        <property name="url" value="jdbc:mysql://localhost:3306/spring" />
        <!--连接数据库的用户名 -->
        <property name="username" value="root" />
        <!--连接数据库的密码 -->
        <property name="password" value="root" />
    </bean>
    <!-- 2配置JDBC模板 -->
    <bean id="jdbcTemplate" 
           class="org.springframework.jdbc.core.JdbcTemplate">
        <!-- 默认必须使用数据源 -->
        <property name="dataSource" ref="dataSource" />
    </bean>
    
    <!--定义id为accountDao的Bean-->
    <bean id="accountDao" class="com.jdbc.AccountDaoImpl">
        <!-- 将jdbcTemplate注入到accountDao实例中 -->
        <property name="jdbcTemplate" ref="jdbcTemplate" />
    </bean>


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring学习-5-JdbcTemplate数据库操作 的相关文章

随机推荐

  • Qt d指针简单实现及解析

    object h ifndef OBJECT H define OBJECT H define INVOKE METHOD PRIVATE Class Class Private d func return reinterpret cast
  • 虚拟机无法打开“D:\虚拟机\CentOS.vmx”

    虚拟机无法打开 D 虚拟机 CentOS vmx 对于这个问题 解决方法是移管理员身份运行这个VM软件 但是每次都用管理员权限很麻烦 一劳永逸的方法是 1 右击软件打开属性 2 选兼容性那个 3 勾选里面的以管理员身份运行 4 点击确定就可
  • UE4和C++ 开发-Unity 过度到 Unreal 4 对比简化版

    3 两个引擎的部分术语对比 4 7 From GameObjects to Actors 从GameObjects到Actors GameObject在UE4中如何体现 UE4有一个 Gameplay Framework 系统来使用这些Ac
  • 分解质因数模板

    include
  • CTP量化之路一(CTP接口篇)

    随时股票交易越来越顺 条件单系统大大缩减了我看盘的时间 资产越来越多的同时 分散风险也成了个人的需求 因为手时已有成熟的交易策略 自已曾经用的期货账号也还没有被冻结 于是想着拣来做期货自动化 于是自上周向期货公司申请了期货自动化 填写了一堆
  • kubeadm搭建高可用k8s集群

    1 环境准备 hostname IP 组件 m1 192 168 150 140 keepalived haproxy etcd apiserver docker controller manager scheduler m2 192 16
  • 韦东山视频

    第一期 第二期 一期 免费 54节视频 共16 93G 二期 73节视频 每节50分钟总时长3650分钟 共29 6G 掌握写汇编代码的能力 可以分析任意裸板包括U boot 内核里的相关汇编代码 掌握常用的硬件部件的操作 比如GPIO U
  • 【C语言】17-函数-3

    1 链接属性 当组成一个程序的各个源文件分别被编译之后 所有的目标文件以及那些从一个或多个函数库中引用的函数将链接在一起 形成可执行程序 然而 如果相同的标识符出现在几个不同的源文件中时 它们是表示同一个实体 还是表示不同的实体 标识符的链
  • vc不认识 CTreeView

    在VC中调用 CTreeView 方法是 VC会提示error c2504 CTreeView base class undefined CTreeView的基类没有被定义 必须在系统头文件声明处 StdAfx h 加入其头文件 afxcv
  • 把Windows安装到U盘,给Mac电脑用

    启动转换助理是在mac的硬盘分区装win10 mac硬盘金贵呀 以下解决方案把win10安装在u盘 不安装在mac硬盘上 想用的时候插上mac电脑即可 1 把win安装在u盘上 首先在启动转换助理上下载windowssupport文件 具体
  • iOS开发实战之app获取通讯录(iOS 9)

    在做通讯类APP的时候 时常会访问到手机的通讯录 来获取联系人的各种属性 那么本文就来讨论一下怎么获取通讯录 注意 iOS 9 版本上可以行 其他版本未试 第一步 先导入系统库 Contacts framework 然后在 h上导入头文件
  • VGG与风格迁移算法原理

    一 实验介绍 1 1 实验内容 上节课我们学习了卷积神经网络的基本原理 本节实验我们将学习用于图像风格迁移的经典的卷积神经网络模型VGG 并用caffe提供的 draw net py 实现模型的可视化 本节实验我们也将学习图像风格转换的算法
  • 11月22日 EQS优化,让AI知道什么地方不能走,自定义游戏模式,让AI在玩家旁边生成,难度提升,随着时间增多的AI

    EQS优化 让AI知道什么地方不能走 首先进行小修改 创建一个新的AIEQS 新建一个测试pawn 把测试pawn放入场景内 在eqs中放入我们写的eqs任务 使用模拟游戏 就可以直接可视化eqs的选择坐标点 https docs unre
  • JMeter之压力测试——混合场景并发

    在实际的压力测试场景中 有时会遇到多个场景混合并发的情况 这时就需要设置不同的并发比例对不同场景请求数量的控制 下面提供两种方案 一 多线程组方案 1 业务场景设计如下 场景A 场景B 场景C 三个场景按照并发比例要求进行100个用户并发的
  • c语言rand的最大值,[讨论]有关rand()生成数的大小..

    讨论 有关rand 生成数的大小 我想生成 bits的随机数 现在想知道rand 最大能生成多少bits的随机数 搜索更多相关的解决方案 rand 成数 解决方案 当然是32位可以表示的最大数 解决方案 可是经过反复测试 是生成的 位的随机
  • 容器化部署zabbix

    一 创建docker compose yml文件 首先创建一份docker compose yml文件 使用docker compose进行容器的编排 mkdri zabbix 在根目录创建zabbix文件 cd zabbix touch
  • Windows蓝屏代码大全及解决提示

    知识点分析 电脑出现蓝屏现象时 由于导致蓝屏现象的原因较多 建议先通过此款软件进行分析 简单确定蓝屏原因 操作步骤 BlueScreenView不需要任何安装过程或额外的DLL文件 只需运行可执行文件 BlueScreenView exe就
  • Linux下Apache Web服务器的安装与配置

    1 Apache Web服务器简述 Web服务是目前Internet应用最流行 最受欢迎的服务之一 Linux平台使用最广泛的Web服务器是Apache 它是目前性能最优秀 最稳定的Web服务器之一 WWW World Wide Web 服
  • 【Qt】控件探幽——QPushbutton

    注1 本系列文章使用的Qt版本为Qt 6 3 1 注2 本系列文章常规情况下不会直接贴出源码供复制 都以图片形式展示 所有代码 自己动手写一写 记忆更深刻 本文目录 QPushButton探幽 1 clicked bool 信号的参数的含义
  • Spring学习-5-JdbcTemplate数据库操作

    针对数据库的操作 Spring框架提供了JdbcTemplate类 该类是Spring框架数据抽象层的基础 可以说 JdbcTemplate类是Spring JDBC的核心类 在JdbcTemplate核心类中 提供了大量的更新和查询数据库