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# EF 使用sqlite 数据库出现表名出现dbo的坑

    当ef使用sqlite时,正常情况映射的表名是没有dbo开头的.这个dbo是映射的sa用户,而sqlite是没有用户的.所以映射出的sql语句是查不到数据的.   我在网上找半天解决方案,都不得行.后 ...

  2. 在唯一密钥属性“name”设置为“XXX”时,无法添加类型为“add”的重复集合项

    我是在调试时,更改了项目url出现的问题,没有改端口号,只是改了"/"后面的地址 这个是我是改哈端口号就好了,改了端口号就重新建立虚拟目录了. 感觉是因为端口号没变,但项目url变 ...

  3. IDEA使用——新建WEB项目及WEB项目的运行

    第一步:新建项目 1.2勾选Web Application 1.3填写项目名 第二步:项目配置 2.1在WEB-INF目录下新建 classes 和 lib 目录(过程省略) 2.2将classes目 ...

  4. Newtonsoft.Json 首字母小写

    // 首字母小写 JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings(); jsonSerialize ...

  5. zfile 在线云盘、网盘、OneDrive、云存储、私有云、对象存储、h5ai、上传、下载

    基于 Java 的在线网盘程序,支持对接 S3.OneDrive.SharePoint.又拍云.本地存储.FTP.SFTP 等存储源,支持在线浏览图片.播放音视频,文本文件.Office.obj(3d ...

  6. win11启动虚拟机出现蓝屏

    win11虚拟机启动出现蓝屏 问题 我的电脑是win11系统,最近在安装vmware后装了centos7.6,发现一启动centos,电脑就出现蓝屏,如图 解决 这个问题搞了好久,最终发现是win11 ...

  7. vue 的directives一个坑

    大江东去,浪淘尽,千古风流人物.故垒西边,人道是,三国周郎赤壁.乱石穿空,惊涛拍岸,卷起千堆雪.江山如画,一时多少豪杰.遥想公瑾当年,小乔初嫁了,雄姿英发.羽扇纶巾,谈笑间,樯橹灰飞烟灭.故国神游,多 ...

  8. dhcp报错

    报错详情 查看dhcpd.service状态 使用命令检查配置文件报错 dhcpd -t -cf /etc/dhcp/dhcpd.conf 修改配置文件 重启dhcpd服务 [root@servera ...

  9. Qt初始化代码基本说明

    参考视频:黑马程序员https://www.bilibili.com/video/BV1XW411x7NU?p=4 1  工程基本介绍 按照这个基本步骤(https://www.cnblogs.com ...

  10. LeetCode 692. Top K Frequent Words 前K个高频单词 (Java)

    题目: Given a non-empty list of words, return the k most frequent elements. Your answer should be sort ...