Spring JDBC

* Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发

步骤

  1. 导入jar包
  2. 创建JDBCTemplate对象,依赖于数据源DataSource
    • JdbcTemplate template=new JdbcTemplate(datasource);
  3. 调用JDBCTemplate的方法来完成CRUD的操作
    • update():执行DML语句。增删查改
    • queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
      • 注意:查询结果集长度只能为1
    • queryForList():查询结果将结果集封装为list集合
      • 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
    • query():查询结果,将结果封装为JavaBean对象
      • query的参数:RowMapper

        • 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
        • new BeanPropertyRowMapper<类型>(类型.class)
    • queryForObject():查询结果,将结果封装为对象
      • 一般用于聚合函数

代码如下

package cn.itcast.jdbctemplate;

import cn.itcast.utils.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate; public class JdbcTemplateDemo1 {
public static void main(String[] args){
//导入jar包
//创建JdbcTemplate对象
JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
//调用方法
String sql="update account set balance=2000 where id=?";
int count =template.update(sql,3);
System.out.println(count);
}
}

练习

需求

1.修改1号数据的salary为10000
2.添加一条数据
3.删除刚才添加的记录
4.查询id为1的记录,将其封装为Map集合
5.查询所有记录,将其封装为List
6.查询所有记录,将其封装为Emp对象的List集合
7.查询总记录数

代码如下

package cn.itcast.jdbctemplate;

import cn.itcast.domain.Emp;
import cn.itcast.utils.JDBCUtils;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Map; public class JdbcTemplateDemo2 {
//Junit单元测试 可以让方法独立执行
// 1.修改1号数据的salary为10000
//创建JdbcTemplate对象
private JdbcTemplate template =new JdbcTemplate(JDBCUtils.getDataSource());
@Test
public void test1(){
//导入jar包 //调用方法
String sql="update emp set sarlary=10000 where id=?";
int count =template.update(sql,1001);
System.out.println(count);
}
// 2.添加一条数据
@Test
public void test2(){
//导入jar包 //调用方法
String sql="insert into emp(id,ename,dept_id) values(?,?,?)";
int count =template.update(sql,1015,"guoj",10);
System.out.println(count);
}
// 3.删除刚才添加的记录
@Test
public void test3(){
//导入jar包 //调用方法
String sql="delete from emp where id=?";
int count =template.update(sql,1015);
System.out.println(count);
}
// 4.查询id为1005的记录,将其封装为Map集合
//查询结果集长度只能为1
@Test
public void test4(){
//导入jar包 //调用方法
String sql="select * from emp where id=?";
Map<String,Object> map =template.queryForMap(sql,1001);
System.out.println(map);
}
// 5.查询所有记录,将其封装为List
@Test
public void test5(){
//导入jar包 //调用方法
String sql="select * from emp where id=? or id=?";
List<Map<String,Object>> list=template.queryForList(sql,1001,1002);
for (Map<String,Object> stringObjectMap:list){
System.out.println(stringObjectMap);
} }
// 6.查询所有记录,将其封装为Emp对象的List集合
@Test
public void test6(){
//导入jar包 //调用方法
String sql="select * from emp ";
List<Emp> list=template.query(sql, new RowMapper<Emp>() { @Override
public Emp mapRow(ResultSet resultSet, int i) throws SQLException { int id=resultSet.getInt("id");
String ename=resultSet.getString("ename");
int job_id=resultSet.getInt("job_id");
int mgr=resultSet.getInt("mgr");
Date joindate=resultSet.getDate("joindate");
double salary=resultSet.getDouble("sarlary");
double bonus=resultSet.getDouble("bonus");
int dept_id=resultSet.getInt("dept_id");
Emp emp=new Emp(id,ename,job_id,mgr,joindate,salary,bonus,dept_id); return emp;
}
});
for (Emp emp:list){
System.out.println(emp);
} }
// 6.查询所有记录,将其封装为Emp对象的List集合
@Test
public void test6_2(){
//导入jar包 //调用方法
String sql="select * from emp ";
List<Emp> list=template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
for (Emp emp:list){
System.out.println(emp);
} }
// 7.查询总记录数
@Test
public void test7(){
//导入jar包 //调用方法
String sql="SELECT COUNT(id) FROM emp";
Long total=template.queryForObject(sql,Long.class);
System.out.println(total);
}
}

Java-Spring JDBC初体验操作数据库的更多相关文章

  1. Java数据库连接--JDBC基础知识(操作数据库:增删改查)

    一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...

  2. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  3. JAVA - SpringBoot项目引用MyBatis操作数据库

    JAVA - SpringBoot项目引用MyBatis操作数据库 1. 创建SpringBoot项目,参考:https://www.cnblogs.com/1285026182YUAN/p/1232 ...

  4. Java使用JDBC连接SQL Server数据库|实现学生成绩信息系统

    Java实验四 JDBC 使用SQL Server数据库或者MySQL数据库各自的客户端工具,完成如下任务: (1)创建数据库students: (2)在数据students中创建表scores,包括 ...

  5. 简介及spring mvc初体验

    一.C\S和B\S C/S C/S 是 Client/Server 的简写,简称客户端/服务器模式.例如 QQ 是客户端和服务器模式,首先安装一个客户端到个人电脑,然后登入到腾讯服务器. 缺点:更新不 ...

  6. Java使用JDBC连接SQL Server数据库

    Java使用JDBC连接SQL Server数据库 1.下载驱动 1.下载Microsoft SQL Server JDBC 驱动程序 https://docs.microsoft.com/zh-cn ...

  7. Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库

    概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...

  8. Spring JDBC多批次操作

    以下示例将演示如何使用spring jdbc在单个调用中进行多批次更新. 我们将在批量大小为1的多批次操作中更新student表中的记录. student表的结果如下 - CREATE TABLE s ...

  9. spring cloud 初体验

    spring cloud分为注册端.客户端以及消费端 初体验的理解就是: 注册端就是将之前所有的应用在这边进行注册,然后给每个应用都生成自己的标识,这些应用就是来自于客户端,消费端则通过调用注册端(有 ...

  10. JAVA使用JDBC连接,修改MySQL数据库(比较乱)

    原文地址1(连接MySQL图文) : http://www.cnblogs.com/GarfieldEr007/p/5746137.html 原文地址2 (修改MySQL图文): http://www ...

随机推荐

  1. C数据结构线性表:实现顺序表的增删改查&完整篇

    文章目录 ①前言 顺序表结构体的定义 ②初始化顺序表 ③插入新的元素 插入的时候需要特别注意的几点 ④删除元素 第一个删除元素功能实现 第二个删除元素功能实现 对代码下面中**i- -**的说明(第二 ...

  2. 推荐一款微信公众平台Python开发神器!

    1.引言 在当今数字化时代,微信公众平台成为了企业和个人连接用户的重要渠道.为了高效地管理和与用户互动,开发者需要一个强大而灵活的工具. Weixin-Python 正是这样一个为微信公众平台量身打造 ...

  3. 浏览器打开JupyterLab后所有快捷键与窗口按键均失效怎么办?

      本文介绍JupyterLab中菜单栏按钮无法点击.快捷键无法执行问题的解决办法.   近期打开JupyterLab后,发现其中菜单栏按钮无法点击,快捷键也均无法执行.如图,红框内的按钮点击均无任何 ...

  4. github无法访问的问题

    Windows10 通过nslookup命令获取GitHub域名服务器地址,然后ping该地址 nslookup github.com ping 域名服务器地址 发现20.205.243.166能稳定 ...

  5. 一文教你在MindSpore中实现A2C算法训练

    本文分享自华为云社区<MindSpore A2C 强化学习>,作者:irrational. Advantage Actor-Critic (A2C)算法是一个强化学习算法,它结合了策略梯度 ...

  6. Grafana 开源了一款 eBPF 采集器 Beyla

    eBPF 的发展如火如荼,在可观测性领域大放异彩,Grafana 近期也发布了一款 eBPF 采集器,可以采集服务的 RED 指标,本文做一个尝鲜介绍,让读者有个大概了解. eBPF 基础介绍可以参考 ...

  7. k8s介绍

    k8s容器编排系统 k8S是谷歌几十年来研发的一套系统,更新了运维领域的玩法. 内容很多,先快速练习玩法,知道是什么就行. 具体[为什么]再花时间慢慢学吧! 0.参考资料 1. k8s能干什么 htt ...

  8. JavaScript实现防抖节流函数

    review 防抖函数 防抖函数一般是短时间内多次触发,但是只有最后一次触发结束后的delay秒内会去执行相对应的处理函数. 相当于一个赛道里面一次只能跑一辆赛车,如果此时已经有一辆赛车在跑道里面跑, ...

  9. 【已结束】阿珏Blog三周年特别纪念活动

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` [已结束]阿珏Blog三周年特别纪念活动 日期:2019- ...

  10. uniapp ios 白屏

    这个问题找了两天,问题出现的很离谱代码编译没问题,安卓.ios真机运行也没问题,打包以后安卓没问题,iphone 12(ios16.6.1)安装也没问题,还有一个iphone 6s(ios14.7.1 ...