Spring框架JDBC
*Spring框架对JDBC进行简单的封装。提供了一个JDBCTemplate对象简化JDBC的开发
*步骤:
1、导入jar包
2、创建JDBCTemplate对象,以来与数据源DataSource
*JDBCTemplate temp = new JDBCTemplate(ds);
3、调用jdbcT的方法来完成CRUD方法
*updata():执行DML语句,增删改
*queryForMap():查询结果将结果封装map集合
queryForLits():查询结果将结果集封装成为list集合
query():查询结果,将结果封装为JavaBean对象
queryForObject():查询结果,将结果封装为对象
package cn.it.jdbctempl; import cn.it.Duird.JDBCUtils;
import org.springframework.jdbc.core.JdbcTemplate; //入门
public class JdbcTmpl {
public static void main(String[] args) {
//导入jar包 进入工作空间,也就是选择add as Module
//创建jdbcTemplat
JdbcTemplate tmpl = new JdbcTemplate(JDBCUtils.getDataSource());
//调用方法
String sql = "UPDATE db1 SET age = 3 WHERE id =?";
int count = tmpl.update(sql,2);
System.out.println(count);
} }
tips:
利用BeanPropertyRowMapper可以直接有rowmap方,查询所有记录将其封装为对象的list集合
package cn.it.jdbctempl;
import cn.it.Duird.JDBCUtils;
import jdk.nashorn.internal.scripts.JD;
import org.junit.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.List;
import java.util.Map;
public class JdbcTmplDemo {
//直接在声明全员变量 这样就不用每个方法都写一次
private final JdbcTemplate template= new JdbcTemplate(JDBCUtils.getDataSource());
// @Test
// public void test(){
// //modify
// //写一个测试类:这样就不用psvm了 但是要注意 绿色不一样的没错
// //定义sql语句
// String sql = "";
// int count = template.update(sql);
// System.out.println(count);
//
// }
// @Test
// public void test1(){
// //insert
// //预编译,防止sql注入 注意where时需要
// String sql = "?,?,?";
// //number 是int型的字符
// int count = template.update(sql, number, "字符串", number);
// System.out.println(count);
// }
// @Test
// public void test02(){
// //delect
// //number 是int型的字符 用于where
// String sql = "?";
// int count = template.update(sql, number);
// System.out.println(count);
// }
//4 查询一条记录 而map集合长度只能是1,将列名为K,值为V MAP<K,V>
@Test
public void test04(){
String sql = "select * from db1 where id = ?";
Map<String,Object> map = template.queryForMap(sql,3);
System.out.println(map);
//{id=3, age=3, name=123, time=null, password=null}
}
@Test
public void test05(){
String sql = "select * from db1";
List<Map<String, Object>> list = template.queryForList(sql);
//iter:快捷键 是增强for的快捷键
//而这个是将每条数据存入map集合,再将这个map集合存放在list里面
for (Map<String, Object> stringObjectMap : list) {
System.out.println(stringObjectMap);
//{id=1, age=12, name=123, time=null, password=null}
//{id=2, age=3, name=123, time=null, password=null}
//{id=3, age=3, name=123, time=null, password=null}
//{id=4, age=12, name=213, time=null, password=null}
//{id=5, age=12, name=123, time=null, password=null}
//{id=6, age=15, name=12, time=null, password=null}
//{id=7, age=15, name=tt, time=null, password=null}
//{id=8, age=28, name=tt, time=null, password=null}
//{id=9, age=28, name=tt, time=null, password=null}
//{id=10, age=15, name=tt, time=null, password=root}
//{id=11, age=20, name=ttt, time=null, password=root}
}
}
//06 数据存在javabean里面,然后从javabean放入list
@Test
public void test06(){
String sql = "SELECT * FROM db1";
//这个方法非常难受 因为需要写好多好多- - 这里的mapRow其实还可以有方法
// List<Object> list= template.query(sql, new RowMapper<Object>() {
// @Override
// public Object mapRow(ResultSet rs, int i) throws SQLException {
// return null;
// }
// });
//方法二:利用BeanPropertyRowMapper可以直接有rowmap方法
//查询所有记录将其封装为对象的list集合
List<userList> list = template.query(sql,new BeanPropertyRowMapper<userList>(userList.class));
for (userList userList : list) {
System.out.println(userList);
}
//注意如果sql语句写错的话,也会出现报错的情况
//在user没有写入getset方法和tostring方法时
//可以成功运行 但是输出的是data的地址
/*
cn.it.jdbctempl.userList@5c18298f
cn.it.jdbctempl.userList@31f924f5
cn.it.jdbctempl.userList@5579bb86
cn.it.jdbctempl.userList@5204062d
cn.it.jdbctempl.userList@4fcd19b3
cn.it.jdbctempl.userList@376b4233
cn.it.jdbctempl.userList@2fd66ad3
cn.it.jdbctempl.userList@5d11346a
cn.it.jdbctempl.userList@7a36aefa
cn.it.jdbctempl.userList@17211155
cn.it.jdbctempl.userList@b3d7190
*/
}
@Test
public void test07(){
//打印所有的记录条数 queryForObject
String sql = "select count(id) from db1";
Long total = template.queryForObject(sql, long.class);
System.out.println(total);
}
}
Spring框架JDBC的更多相关文章
- 跟着刚哥学习Spring框架--JDBC(六)
Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...
- Spring框架——JDBC方式搭建项目
学习Spring框架,使用JDBC的方式配置方式搭建一个项目,进行项目总结. 首先,采用MVC设计模式思想,搭建项目目录. 然后各个目录文件下面的相关源码附上: controller目录: impor ...
- Spring框架——JDBC与事务管理
JDBC JDBCTemplate简介 XML配置JDBCTemplate 简化JDBC模板查询 事务管理 事务简介 Spring中的事务管理器 Spring中的事务管理器的不同实现 用事务通知声明式 ...
- spring框架-jdbc
一.实体层的不同名字 entity 实体类 :就是和数据库表一一对应的JavaBean pojo 简单的java对象:任何应用场景的JavaBean po 持久化对象 :就是和数据库表一一对 ...
- spring 框架jdbc连接数据库
user=LF password=LF url=jdbc:oracle:thin:@localhost:1521:orcl driver=oracle.jdbc.driver.OracleDriver ...
- 跟着刚哥学习Spring框架--创建HelloWorld项目(一)
1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ...
- 跟着刚哥学习Spring框架--AOP(五)
AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ...
- 跟着刚哥学习Spring框架--Spring容器(二)
Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用. Bean是S ...
随机推荐
- Vue 基础学习总结
介绍 Vue.js 中文文档地址:https://cn.vuejs.org/guide/introduction.html#what-is-vue Vue.js 是什么 Vue (读音 /vjuː/, ...
- openssh编译rpm包(防火防盗防漏扫)
参考链接:https://www.jianshu.com/p/0882b0502960 openssh下载链接: wget https://cdn.openbsd.org/pub/OpenBSD/Op ...
- 【Java并发007】原理层面:ReentrantLock中lock()、unlock()全解析
一.前言 Java线程同步两种方式,synchronized关键字和Lock锁机制,其中,AQS队列就是Lock锁实现公平加锁的底层支持. 二.AQS源码对于lock.lock()的实现 2.1 AQ ...
- C++初阶(封装+多态--整理的自认为很详细)
继承 概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单 ...
- day01-计算机的本质
计算机的本质 计算机又称为"电脑": 通电的大脑 意味着我们人类希望计算机通电之后可以跟人脑一样思考问题.解决问题 计算机存储数据的本质 计算机是基于电工作,而电信号只有高低电平两 ...
- 一个宁静祥和没有bug的下午和SqlSession的故事
1 背景 这是一个安静祥和没有bug的下午.作为一只菜鸡,时刻巩固一下基础还是很有必要的,如此的大好时机,就让我来学习学习mybatis如何使用. 这可和我看到的不一样啊,让我来看看项目里怎么写的. ...
- mysql查询结果拼接树结构(树节点的移动)
mysql查询结果拼接树结构(树节点的移动) 思路:单表内查询全部数据,在业务层内递归拼接树结构. 前端用的是element的Tree 树形控件: 树结构实体: @Data @AllArgsConst ...
- day 19 分组查询 & having和where区别
day19 分组查询group by having用法 用于分组关键字(group by)后面 用于对分组之后的结果集进行筛选 having关键字后面可以使用聚合函数 having和where的区别 ...
- IdentityServer4的最佳使用
简介 本人做微服务项目也有一段时间了,在微服务中让我感触颇深的就是这个IdentityServer4了,ID4(IdentityServer4的简称)中涉及的概念颇多,本文不谈概念(我怕读者没耐心 ...
- js将时间戳转成时间格式
let start_time = 1653007401082, date = new Date(+start_time), Y = date.getFullYear() + '-', M = (dat ...