Java-Spring JDBC初体验操作数据库
Spring JDBC
* Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发
步骤
- 导入jar包
- 创建JDBCTemplate对象,依赖于数据源DataSource
- JdbcTemplate template=new JdbcTemplate(datasource);
- 调用JDBCTemplate的方法来完成CRUD的操作
- update():执行DML语句。增删查改
- queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
- 注意:查询结果集长度只能为1
- queryForList():查询结果将结果集封装为list集合
- 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
- query():查询结果,将结果封装为JavaBean对象
- query的参数:RowMapper
- 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
- new BeanPropertyRowMapper<类型>(类型.class)
- query的参数:RowMapper
- 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初体验操作数据库的更多相关文章
- Java数据库连接--JDBC基础知识(操作数据库:增删改查)
一.JDBC简介 JDBC是连接java应用程序和数据库之间的桥梁. 什么是JDBC? Java语言访问数据库的一种规范,是一套API. JDBC (Java Database Connectivit ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- JAVA - SpringBoot项目引用MyBatis操作数据库
JAVA - SpringBoot项目引用MyBatis操作数据库 1. 创建SpringBoot项目,参考:https://www.cnblogs.com/1285026182YUAN/p/1232 ...
- Java使用JDBC连接SQL Server数据库|实现学生成绩信息系统
Java实验四 JDBC 使用SQL Server数据库或者MySQL数据库各自的客户端工具,完成如下任务: (1)创建数据库students: (2)在数据students中创建表scores,包括 ...
- 简介及spring mvc初体验
一.C\S和B\S C/S C/S 是 Client/Server 的简写,简称客户端/服务器模式.例如 QQ 是客户端和服务器模式,首先安装一个客户端到个人电脑,然后登入到腾讯服务器. 缺点:更新不 ...
- Java使用JDBC连接SQL Server数据库
Java使用JDBC连接SQL Server数据库 1.下载驱动 1.下载Microsoft SQL Server JDBC 驱动程序 https://docs.microsoft.com/zh-cn ...
- Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- Spring JDBC多批次操作
以下示例将演示如何使用spring jdbc在单个调用中进行多批次更新. 我们将在批量大小为1的多批次操作中更新student表中的记录. student表的结果如下 - CREATE TABLE s ...
- spring cloud 初体验
spring cloud分为注册端.客户端以及消费端 初体验的理解就是: 注册端就是将之前所有的应用在这边进行注册,然后给每个应用都生成自己的标识,这些应用就是来自于客户端,消费端则通过调用注册端(有 ...
- JAVA使用JDBC连接,修改MySQL数据库(比较乱)
原文地址1(连接MySQL图文) : http://www.cnblogs.com/GarfieldEr007/p/5746137.html 原文地址2 (修改MySQL图文): http://www ...
随机推荐
- salesforce零基础学习(一百三十六)零碎知识点小总结(八)
本篇参考: Salesforce LWC学习(七) Navigation & Toast https://developer.salesforce.com/docs/platform/lwc/ ...
- 数据库—安全性控制DCL
文章目录 授予数据库权限 授予用户能够授予其他用户的权限 收回权限 数据库的权限(特殊) 授予数据库权限 这里的用户是指数据库DBMS中创建的用户,而不是程序中的账户用户. 授予某个/多个表的某一个/ ...
- Three加载3D模型贴图
Three加载3D模型贴图 准备阶段 3D模型 three 库文件 纹理图片 相关资料 官方开发文档: https://threejs.org/docs 官网编辑3D模型:https://threej ...
- C++ Virtual Functions
Virtual这个关键字在多态中扮演一个绝对重要的角色,只要member functions声明的前面加上virtual的关键字,他就会成为 Virtual member functions.任何一个 ...
- 【winform】【Socket】实现你画我猜一:核心功能开发
我认为得核心:是把客户端画的图画实时传递给其他的客户端. 我的思路是: 1.GDI+绘图加鼠标事件,实现客户端绘图. 2.每记录鼠标有效绘图10个点,就把这10个点通过socket传递给服务器. ...
- Flask简单部署至kubernetes
安装Kubernetes.Docker Kubernetes.Docker安装教程 项目地址 Github Flask flask run.py from flask import Flask imp ...
- go goroutine pool设计
推荐一遍由浅入深简绍goroutine pool设计的方案.https://strikefreedom.top/high-performance-implementation-of-goroutine ...
- ModelScope初体验
使用环境:windows 11 前置条件:已安装 anaconda 参考文档:环境安装 step1:新建一个 conda 环境,命名为 modelscope conda create -n model ...
- Android 13 - Media框架(15)- OpenMax(三)
关注公众号免费阅读全文,进入音视频开发技术分享群! 上一节学习了 media.codec 服务中的部分内容,这一节我们将一起了解 OMX IL 层的 API 以及相关的结构体等内容. 1.相关路径 以 ...
- python相关常见安装问题
1 Centos7安装pip 参考链接:centos7 pip升级 - fuhaizi - 博客园 (cnblogs.com) Centos7默认pip版本: 使用默认pip版本安装numpy库,会报 ...