*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的更多相关文章

  1. 跟着刚哥学习Spring框架--JDBC(六)

    Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...

  2. Spring框架——JDBC方式搭建项目

    学习Spring框架,使用JDBC的方式配置方式搭建一个项目,进行项目总结. 首先,采用MVC设计模式思想,搭建项目目录. 然后各个目录文件下面的相关源码附上: controller目录: impor ...

  3. Spring框架——JDBC与事务管理

    JDBC JDBCTemplate简介 XML配置JDBCTemplate 简化JDBC模板查询 事务管理 事务简介 Spring中的事务管理器 Spring中的事务管理器的不同实现 用事务通知声明式 ...

  4. spring框架-jdbc

    一.实体层的不同名字    entity 实体类 :就是和数据库表一一对应的JavaBean  pojo 简单的java对象:任何应用场景的JavaBean  po 持久化对象 :就是和数据库表一一对 ...

  5. spring 框架jdbc连接数据库

    user=LF password=LF url=jdbc:oracle:thin:@localhost:1521:orcl driver=oracle.jdbc.driver.OracleDriver ...

  6. 跟着刚哥学习Spring框架--创建HelloWorld项目(一)

    1.Spring框架简介 Spring是一个开源框架,Spring是在2003年兴起的一个轻量级的开源框架,由Rod johnson创建.主要对JavaBean的生命周期进行管理的轻量级框架,Spri ...

  7. 跟着刚哥学习Spring框架--AOP(五)

    AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...

  8. 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

    组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...

  9. 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

    Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ cl ...

  10. 跟着刚哥学习Spring框架--Spring容器(二)

    Spring容器 启动Spring容器(实例化容器) -- IOC容器读取Bean配置创建Bean实例之前,必须对它进行实例化(加载启动),这样才可以从容器中获取Bean的实例并使用.  Bean是S ...

随机推荐

  1. 关于C++ find

    #include <bits/stdc++.h> using namespace std; int a[1005]; int main() { for(int i = 0;i < 1 ...

  2. AtCoder Regular Contest 151补题

    AtCoder Regular Contest 151 A. Equal Hamming Distances 简单题,注意下答案需要字典序最小即可 #include<bits/stdc++.h& ...

  3. [排序算法] 快速排序 (C++) (含三种写法)

    快速排序解释 快速排序 Quick Sort 与归并排序一样,也是典型的分治法的应用. (如果有对 归并排序还不了解的童鞋,可以看看这里哟~ 归并排序) 快速排序的分治模式 1.选取基准值,获取划分位 ...

  4. 模拟Promise的功能

    模拟Promise的功能,  按照下面的步骤,一步一步 1. 新建是个构造函数 2. 传入一个可执行函数 函数的入参第一个为 fullFill函数 第二个为 reject函数: 函数立即执行, 参数函 ...

  5. 【SQL进阶】【CASE/IF、COUNT/SUM、多条记录拼接为一个内容】Day03:聚合分组查询

    〇.今日内容概述 一.聚合函数 1.SQL类别高难度试卷得分的截断平均值[去最高最低分求平均] 自己的想法 SELECT tag, difficulty, ROUND((SUM(score)-MIN( ...

  6. Django测试脚本-单表操作(增删改查)-必知必会13条-神奇的双下划线

    目录 一:Django测试脚本 1.测试环境准备 2.tests.py 3.models.py 4.切换MySQL数据库 二:单表操作 1.pk关键字与get关键字 2.增 3.删 4.修 三:必知必 ...

  7. ArcObjects SDK开发 017 在ArcObject SDK 中使用Toolbox

    1.Geoprocessor和IGPProcess Geoprocessor是ArcObjects SDK中定义Tool执行器.IGPProcess接口是ArcObjects SDK中定义的ArcTo ...

  8. 时间老去,Ruby不死,Ruby语言基础入门教程之Ruby3全平台开发环境搭建EP00

    如果说电子游戏是第九艺术,那么,编程技术则配得上第十艺术的雅称.艺术发展的普遍规律就是要给与人们对于艺术作品的更高层感受,而Matz的Ruby语言则正是这样一件艺术品. 无论是语法还是理念,都让Rub ...

  9. Java开发学习(四十九)----MyBatisPlus更新语句之乐观锁

    1.概念 在讲解乐观锁之前,我们还是先来分析下问题: 业务并发现象带来的问题:秒杀 假如有100个商品或者票在出售,为了能保证每个商品或者票只能被一个人购买,如何保证不会出现超买或者重复卖 对于这一类 ...

  10. python3使用OCR识别图片

    放假三天,闲来无事,想学下python爬虫.本想跟着网上教程操作一遍,奈何安装使用过程中出现一堆问题,并且在网上搜了一堆复制黏贴的答案,关键都不能起作用,最后终于找到一篇生效,为了以后不至于再经历这种 ...