Spring JDBC案例

1.完成Account类中的定义私有变量(id,userName,balance)

package com.spring.jdbc.JdbcTemplate;public class Account {//定义私有变量private Integer id;       //账户IDprivate String userName;  //账户名称private Double balance;   //账户余额//定义set和get方法完成依赖注入public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public Double getBalance() {return balance;}public void setBalance(Double balance) {this.balance = balance;}//输出函数public String toString() {return "id="+id + ",userName="+userName+",balance="+balance;}}

2.完成AccountManage接口类,定义接口(插入add、更新update、查询单个query、查询所有queryAll、删除delete)

// com.spring.jdbc.JdbcTemplate; 
package com.spring.jdbc.JdbcTemplate;public interface AccountManage {//定义接口//插入账号记录public void addAccount(Account account);//更新账号记录public void updateAccount(Account account);//查询单个账户记录public void queryAccountById(Integer id);//查询所有账户记录public void queryAllAccount();//删除账号记录public void deleteAccount(Integer id);}

3.完成AccountManageImpl接口实现类

package com.spring.jdbc.JdbcTemplate;import java.util.List;import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;//接口实现类
public  class AccountManageImpl implements AccountManage {//定义JdbcTemplate属性以及相关的set方法private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}@Overridepublic void addAccount(Account account) {//定义一个SQL语句,实现插入一条数据String sql="insert into accounts(id,userName,balance) value(?,?,?)";//定义数组存放SQL语句中的参数Object[] obj = new Object[] {account.getId(),account.getUserName(),account.getBalance()};//执行SQL语句,返回执行添加操作的记录条数int num = jdbcTemplate.update(sql,obj);if(num >0) {System.out.println("成功插入了"+num+"条转账记录");System.out.println(account);}else {System.out.println("执行插入账号记录失败");}}@Overridepublic void queryAccountById(Integer id) {//定义一个SQL语句,实现根据账户ID进行查询String sql="select * from accounts where id=?";//创建一个BeanProPertRowMapper对象RowMapper<Account> rowMapper;rowMapper = new BeanPropertyRowMapper<Account>(Account.class);//执行Sql查询语句,并通过rowMapper类返回Account类对象Account account = jdbcTemplate.queryForObject(sql,rowMapper,id);System.out.println("成功查询了1个用户记录");System.out.println(account);}@Overridepublic void queryAllAccount() {//定义SQL查询语句,实现查询所有的账号记录String sql="select * from accounts";//创建一个BeanProPertRowMapper对象RowMapper<Account> rowMapper;rowMapper = new BeanPropertyRowMapper<Account>(Account.class);//执行Sql查询语句,并通过rowMapper类返回Account类对象List<Account>accounts = jdbcTemplate.query(sql,rowMapper);System.out.println("成功查询了所有的用户记录");//循环输出每个记录for(Account account:accounts) {System.out.println(account);}}@Overridepublic void updateAccount(Account account) {//定义SQL查询语句,实现更新账号id余额String sql="update accounts set balance=? where id=?";//定义数组用来存放SQL语句中的参数Object[] params = new Object[] {account.getBalance(),account.getId()};//执行SQL更新语句,返回执行更新操作的记录条数int num = jdbcTemplate.update(sql,params);if(num>0) {System.out.println("数据更新成功"+num+"条账号记录");}else {System.out.println("执行更新账号记录失败");}}@Overridepublic void deleteAccount(Integer id) {//定义SQL查询语句,实现更新账号id余额String sql="delete from accounts where id=?";//执行SQL删除语句,返回执行删除操作的记录条数int num = jdbcTemplate.update(sql,id);if(num>0) {System.out.println("数据成功删除"+num+"条账号记录");}else {System.out.println("执行删除账号记录失败");}}}

4.完成jdbcTemplateTest程序测试类,完成创建数据表,查询、插入、更新、删除等操作。

package com.spring.jdbc.JdbcTemplate;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;public class JdbcTemplateTest {public static void main(String[] args) {//加载jdbcTemplate.xml文件ApplicationContext context;context = new ClassPathXmlApplicationContext("jdbcTemplate.xml");//获取bean实例jdbcTemplateJdbcTemplate jdbcTemplate = (JdbcTemplate)context.getBean("jdbcTemplate");//1、使用execute()方法执行sql创建表语句,创建账户表accountsjdbcTemplate.execute("create table if not exists accounts(id int,userName varchar(50),balance double)");System.out.println("************************************");System.out.println("     账户表 accounts 创建成功!");System.out.println("************************************");//2、获取Bean实例accountManageAccountManage accountManage;accountManage = (AccountManage)context.getBean("accountManage");//3、创建Account类对象accountAccount account = new Account();//插入数据:给属性赋值,插入两条数据System.out.println("====== I N S E R T =====");account.setId(20240702);account.setUserName("黄桑");account.setBalance(1000.0);accountManage.addAccount(account);System.out.println("====== S E L E C T =====");//查询单条数据:id为20240702的账户记录accountManage.queryAccountById(20240702);//查询所有数据: 所有账户记录accountManage.queryAllAccount();System.out.println("====== U P D A T E =====");//更新一条数据:id为20240702的账户名字改为小张account.setId(20240702);account.setBalance(1000.0);accountManage.updateAccount(account);//查询所有数据: 所有账户记录accountManage.queryAllAccount();System.out.println("====== D E L E T E =====");//删除账户ID为20240702的账户记录accountManage.deleteAccount(20240702);//查询所有数据: 所有账户记录accountManage.queryAllAccount();//关闭容器((AbstractApplicationContext) context).close();}}

5.jdbcTemple.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--配置数据源--><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><!--数据库驱动--><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><!--数据库url--><property name="url" value="jdbc:mysql://localhost:3306/db_spring"/><!--数据库用户名--><property name="username" value="root"/><!--数据库密码--><property name="password" value="123456"/></bean><!--配置JDBC模板--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/></bean><!--配置注入类--><bean id="accountManage" class="com.spring.jdbc.JdbcTemplate.AccountManageImpl"><property name="jdbcTemplate" ref="jdbcTemplate"/></bean>
</beans>

运行说明
将项目文件夹下的resource目录中的jdbcTemple.xml拷贝到bin目录下
手动创建数据库db_spring

CREATE DATABASE db_spring;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试必问必背面试题

01 软件测试理论部分 1.1 测试概念 1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试 单元测试&#xff1a;完成最小的软件设计单元&#xff08;模块&#xff09;的验证工作&#xff0c;目标是确保模块被正确的编码集成测试&#xff1a;通过测试发现与…

Apollo学习-useMutation的使用

一、useMutation useMutation是一个 React Hook&#xff0c;它通常与 Apollo Client 一起使用&#xff0c;用于在 React 应用程序中执行 GraphQL 突变&#xff08;Mutation&#xff09;操作。这个 Hook 提供了一个简单的 API 来发送 GraphQL 突变请求&#xff0c;并处理响应和…

ForkJoin框架与工作窃取算法详解

文章目录 一、ForkJoin框架概述1_核心概念2_主要类和方法1_ForkJoinPool2_ForkJoinTask 二、启用异步模式与否的区别三、ForkJoinPool的三种任务提交方式四、执行逻辑及使用示例1_示例&#xff1a;并行计算数组元素和2_forkJoinPool.submit3_ForkJoinTask<?>中任务的执行…

实现第一个神经网络

PyTorch 包含创建和实现神经网络的特殊功能。在本节实验中&#xff0c;将创建一个简单的神经网络&#xff0c;其中一个隐藏层开发一个输出单元。 通过以下步骤使用 PyTorch 实现第一个神经网络。 第1步 首先&#xff0c;需要使用以下命令导入 PyTorch 库。 In [1]: import…

解决mysql数据库连接报错:Authentication plugin ‘caching_sha2_password‘ cannot be loaded

解决mysql数据库连接报错&#xff1a;Authentication plugin ‘caching_sha2_password’ cannot be loaded OperationalError: (2059, “Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open sha…

启动Nuxt-hub-starter: Failed to initialize wrangler bindings proxy write EOF

重新安装 node.js 这样做可以确保下载到了适合的 Windows 框架、Chocolatey&#xff08;一款Windows包管理工具&#xff09;、Python 等资源。 这个错误与Node版本、pnpm/yarn 的版本无关&#xff01; Node.js — Download Node.js (nodejs.org)

Selenium 监视数据收发

实际上&#xff0c;在我提供的示例中&#xff0c;确实使用了浏览器实例。webdriver.Chrome()这行代码正是创建了一个Chrome浏览器的WebDriver实例。Selenium Wire扩展了标准的Selenium WebDriver&#xff0c;允许你通过这个浏览器实例来监听网络请求。 当你运行类似这样的代码…

汉光联创HGLM2200N黑白激光多功能一体机加粉及常见问题处理

基本参数&#xff1a; 机器型号&#xff1a;HGLM2200N 产品名称&#xff1a;A4黑白激光多功能一体机 基础功能&#xff1a;打印、扫描、复印 打印速度&#xff1a;22页/分钟 纸张输入容量&#xff1a;150-249页 单面支持纸张尺寸&#xff1a;A4、A5、A6 产品尺寸&#x…

MySQL数据恢复(适用于误删后马上发现)

首先解释一下标题&#xff0c;之所以适用于误删后马上发现是因为太久了之后时间和当时操作的数据表可能会记不清楚&#xff0c;不是因为日志丢失 1.首先确保自己的数据库开启了binlog&#xff08;我的是默认开启的我没有配置过&#xff09; 根据这篇博客查看自己的配置和自己…

MS32008N低压 5V 多通道电机驱动器

MS32008N 是一款多通道电机驱动芯片&#xff0c;其中包 含两路步进电机驱动&#xff0c;一路直流电机驱动&#xff1b;每个步 进电机驱动通道的最大工作电流 1.0A &#xff1b;支持两相四 线与四相五线步进电机。 芯片采用可选的 I 2 C 或 SPI 串行总线控制模式&…

安装 Mamba、Conv1d 时报错 “bare_metal_version“

报错详情1&#xff08;pip install mamba/causal_conv1d&#xff09;&#xff1a; Preparing metadata (setup.py) ... errorerror: subprocess-exited-with-error python setup.py egg_info did not run successfully.│ exit code: 1╰─> [13 lines of output]/tmp/pip-…

鸿蒙开发HarmonyOS NEXT (三) 熟悉ArkTs

一、自定义组件 1、自定义组件 自定义组件&#xff0c;最基础的结构如下&#xff1a; Component struct Header {build() {} } 提取头部标题部分的代码&#xff0c;写成自定义组件。 1、新建ArkTs文件&#xff0c;把Header内容写好。 2、在需要用到的地方&#xff0c;导入…

centos7 安装mysql8.0.34

在 CentOS 7 上安装 MySQL 8.0.34 的步骤如下&#xff1a; 1. 卸载 MariaDB&#xff08;如果已安装&#xff09; CentOS 7 默认使用 MariaDB 作为数据库管理系统&#xff0c;因此在安装 MySQL 之前需要卸载 MariaDB。 rpm -qa | grep mariadb rpm -e --nodeps mariadb-libs-5…

Linux 摄像头编号固化

一、前言 在工业领域&#xff0c;一台设备会有很多个摄像头&#xff0c;可以使用命令&#xff1a;ll /dev/video* 进行查看&#xff1b; 在代码中&#xff0c;如果需要使用摄像头&#xff0c;那么都是需要具体到哪个摄像头编号的&#xff0c;例如 open("/dev/video4"…

[Day 24] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

AI在自動駕駛中的應用 1. 簡介 自動駕駛技術是現代交通領域的一個革命性進展。通過結合人工智能&#xff08;AI&#xff09;、機器學習&#xff08;ML&#xff09;、深度學習&#xff08;DL&#xff09;和傳感器技術&#xff0c;自動駕駛汽車可以在無人干預的情況下安全駕駛。…

线段树求区间最值问题

引言 今天主要还是练了两道题&#xff0c;是有关线段树如何去求一个区间内的最值问题的&#xff0c;我们可以用线段树来解决。 对应一个无法改变顺序的数组&#xff0c;我们想要去求一个区间内的最值&#xff0c;假设有n个结点&#xff0c;m次询问&#xff0c;暴力的解决办法…

51、基于主成分分析和聚类分析的基因表达分析(matlab)

1、主成分分析和聚类分析简介 主成分分析(Principal Component Analysis, PCA)和聚类分析(Cluster Analysis)是两种常用的数据分析方法,用于降维和数据分类。 1)主成分分析(PCA) 主成分分析是一种常用的多元统计数据分析方法,旨在通过找到数据中最重要的变量(主成…

股票分析-20240628

今日关注&#xff1a; 20240626 六日涨幅最大: ------1--------300386--------- 飞天诚信 五日涨幅最大: ------1--------300386--------- 飞天诚信 四日涨幅最大: ------1--------300386--------- 飞天诚信 三日涨幅最大: ------1--------300386--------- 飞天诚信 二日涨幅最…

基于go-gmsm静态库编写的SM2椭圆曲线公钥密码算法PHP扩展 相较于openssl-ext-sm2编译更方便 增加了密文指定排序、识别ans1编码等功能

go-ext-sm2 介绍 基于go-gmsm静态库编写的SM2椭圆曲线公钥密码算法PHP扩展 相较于openssl-ext-sm2编译更方便 增加了密文指定排序、识别ans1编码等功能 特性:非对称加密 git地址:https://gitee.com/state-secret-series/go-ext-sm2.git 软件架构 zend 常规PHP扩展结构 …

vue-org-tree搜索到对应项高亮展开

效果图&#xff1a; 代码&#xff1a; <template><div class"AllTree"><el-form :inline"true" :model"formInline" class"demo-form-inline"><el-form-item><el-input v-model"formInline.user&quo…