*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. RSA、DSA 和 ECC 加密算法有什么区别?

    RSA.DSA 和 ECC 加密算法是用于在公钥基础设施中生成密钥的主要算法. 公钥基础设施 (PKI) 用于管理互联网通信和计算机网络中的身份和安全性. 启用 PKI 的核心技术是公钥密码术,这是一 ...

  2. mindxdl--common--utils.go

    // Copyright (c) 2021. Huawei Technologies Co., Ltd. All rights reserved.// Package common define co ...

  3. Android Studio运行Failed to find Build Tools revision 30.0.3

    问题 第一次安装好Android Studio2022.5的版本之后开启虚拟机运行文件报错提示 Failed to find Build Tools revision 30.0.3 打开SDK已经安装 ...

  4. Linux 中的内部命令和外部命令

    Linux 中的内部命令和外部命令 作者:Grey 原文地址: 博客园:Linux 中的内部命令和外部命令 CSDN:Linux 中的内部命令和外部命令 什么是 bash shell ? bash s ...

  5. 协程Part1-boost.Coroutine.md

    首先,在计算机科学中 routine 被定义为一系列的操作,多个 routine 的执行形成一个父子关系,并且子 routine 一定会在父 routine 结束前结束,也就是一个个的函数执行和嵌套执 ...

  6. 一个有趣的nginx HTTP 400响应问题分析

    背景 之前在一次不规范HTTP请求引发的nginx响应400问题分析与解决 中写过客户端query参数未urlencode导致的400问题,当时的结论是: 对于query参数带空格的请求,由于其不符合 ...

  7. Django的manytomany字段

    manytomany字段 用于表示多对多的关系,最常见的就是老师和班级的例子 一个老师可以教多个班级,一个班级也可以有多个老师 add 添加关系 teachers=models.Teacher.obj ...

  8. JavaEE课程复习1--数据库相关操作

    〇.本模块内容简介 30=(DB5+前端5+Web Core15+Project5) Junit.注解 MySQL.JDBC.JDBCUtils.c3p0.Druid连接池及工具类.JDBCTempl ...

  9. mysql基础问题三问(底层逻辑;正在执行;日志观察)

    背景:经常面试会遇到且实际工作中也会应用到的三个场景: 目录: 一.mysql查询时的底层原理是什么? 二.如何查看正在执行的mysql语句? 三.如何观察mysql运行过程中的日志信息? - - - ...

  10. apache文件工具类的使用:org.apache.commons.io.FileUtils

    说明 org.apache.commons.io.FileUtils 工具类包含了许多操作文件的方法,此文章介绍一些常用的文件操作方法,方便使用的时候查阅参考 创建输入流 public static ...