【Spring】JdbcTemplate的使用,查询,增、删、改
数据库名:taobaodb

配置文件:

JdbcTemplate主要提供以下五类方法:
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
1.单条数据查询(可用于登录判断用户名、密码)
a.获取jsp表单得到的表单信息;
User user = new User();
Map<String, String[]> map = request.getParameterMap();
b.将表单信息注入到User类的对象中;
try {
BeanUtils.populate(u1,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
c.按user的用户名、密码查询数据库,得到一个对象u2,如果u2不是null,那么u2和user的信息是一致的,也就是表单填的信息正确
public User findUser(User user) {
User u=null;
try{
u=jt.queryForObject("select userName,userPwd from userinfo where userName=? and userPwd=?",
new BeanPropertyRowMapper<User>(User.class),user.getUsername(),user.getUserpwd());
}catch (Exception e){
}
return u;
}
如果返回的u为null说明数据库中没有查询到符合条件的信息
单元测试代码:
import javax.sql.DataSource;
import java.io.IOException;
import java.util.Properties;
public class MySql {
@Test
public void addData(){
Properties p=new Properties();//配置文件对象
/*加载配置文件
MySql.class当前类的class文件,getClassLoader类的加载器,getResourceAsStream获取资源流*/
try {
p.load(MySql.class.getClassLoader().getResourceAsStream("druid.properties"));
//创建连接池
DataSource ds = DruidDataSourceFactory.createDataSource(p);
JdbcTemplate jt=new JdbcTemplate(ds);
User user=new User();
user.setUserName("Tom");
user.setUserPwd("666666");
//查询(单条)
try{ //如果数据库中没有查询到此条数据会报错,try catch一下
User u2 =
jt.queryForObject(
"select userName,userPwd from userinfo where userName=? and userPwd=?",
new BeanPropertyRowMapper<User>(User.class),
user.getUserName(),user.getUserPwd());
System.out.println(u2);}catch (Exception e){ }
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果
C:\java\JDK\bin\java.exe
八月 10, 2019 10:36:41 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
User{userName='Tom', userPwd='666666'}
Process finished with exit code 0
2.count sum
String sql="select count(*) from user";
int count= jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(count);
3.多条数据查询
try{ //如果数据库中没有查询到此条数据会报错,try catch一下
RowMapper<User> rowMapper=new BeanPropertyRowMapper<User>(User.class);
String sql="select userName,userPwd from userinfo";
List<User> users=jt.query(sql,rowMapper);
for (User u:users) {
System.out.println(u);
}
}catch (Exception e){ }
运行结果:
八月 10, 2019 10:59:10 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
User{userName='Tom', userPwd='666666'}
User{userName='Alice', userPwd='666***'}
User{userName='Alan', userPwd='*6666#'}
User{userName='Ikun', userPwd='888888'}
User{userName='Bob', userPwd='123456'}
User{userName='Olive', userPwd='222223'}
User{userName='Oreo', userPwd='233233'}
Process finished with exit code 0
3.插入数据(可用于注册)
A.插入单条数据
try{
String sql="insert into userinfo (userName,userPwd,typeId,userStatus) values (?,?,?,?)";
int count= jt.update(sql, new Object[]{"孙悟空","87654321",3,"齐天大圣正常"});
System.out.println("成功插入数据,影响行数:"+count);
}catch (Exception e){ }
运行结果
八月 10, 2019 11:10:58 上午 com.alibaba.druid.support.logging.JakartaCommonsLoggingImpl info
信息: {dataSource-1} inited
成功插入数据,影响行数:1
Process finished with exit code 0

B.批量插入
String sql="insert into userinfo (userName,userPwd,typeId,userStatus) values (?,?,?,?)";
List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add( new Object[]{"孙行者","1111111",3,"正常"});
batchArgs.add( new Object[]{"者行孙","8222221",3,"大圣正常"});
jt.batchUpdate(sql, batchArgs);

4.删除数据
//删除userId为8,9的数据
String sql="delete from userinfo where userId=? or userId=?";
jt.update(sql,9,8);

5.修改(更新)数据
String sql="update userinfo set userStatus=? where userName=?";
jt.update(sql,"者行孙异常","者行孙");

String sql="update userinfo set userStatus=? where userName=?";
jt.update(sql,new Object[]{"Objec方式修改","者行孙"});

【Spring】JdbcTemplate的使用,查询,增、删、改的更多相关文章
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据
第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...
- Spring JdbcTemplate框架搭建及其增删改查使用指南
Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...
- C# ADO.NET (sql语句连接方式)(增,删,改)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- StringBuilder修改字符串内容,增,删,改,插
package seday01;/** * 字符串不变对象特性只针对字符串重用,并没有考虑修改操作的性能.因此String不适合频繁修改内容. * 若有频繁修改操作,使用StringBuilder来完 ...
随机推荐
- node基础知识-说说对node的理解
一.说说你对node的理解 从定义+特点+作用来说对node的理解 定义:node是基于Chrmo v8引擎的JavaScript运行环境; 特点:具有事件驱动,非阻塞I/O模型,高并发和轻量级,单线 ...
- [C#]基础——注意事项
1. 静态类必须直接继承Object 2. 静态类不能实现接口,不能继承其他类(除了Object) 3.静态类中不能有实体方法 4.实体类中可以有静态方法,使用同 静态类 5.readonly属性可以 ...
- 13_JavaScript基础入门(3)
条件分支语句 条件分支语句,也叫作条件判断语句,就是根据某种条件执行某些语句,不执行某些语句. JS中有三种语法是可以表示条件分支的. 1.if--else-- 条件分支的主力语法,这个主力语法能够书 ...
- SAP登录消息提醒
1功能说明 在相应用户登录时,给其提示相关信息. 2功能实现 2.1函数实现 在函数NAVIGATION_SET_START_TCODE中注册要监听的用户和程序的事务代码,当用户登录时,将自动运行 ...
- .net core HttpClient 使用之掉坑解析(一)
一.前言 在我们开发当中经常需要向特定URL地址发送Http请求操作,在.net core 中对httpClient使用不当会造成灾难性的问题,这篇文章主要来分享.net core中通过IHttpCl ...
- vue 兄弟组件之间的传值
一. 子传父,父传子. 二. 1.兄弟之间传递数据需要借助于事件车,通过事件车的方式传递数据 2.创建一个Vue的实例,让各个兄弟共用同一个事件机制. 3.传递数据方,通过一个事件触发bus.$emi ...
- node响应头缓存设置
我把react项目分成4个板块,在路由的顶层 今天在手机上打开react项目的时候,发现平级路由跳转时某一个图片较多的板块图片总是渲染得很慢,这分明是重新发起请求了. 然后我先查一下react-rou ...
- DPDK 无锁队列Ring Library原理(学习笔记)
参考自DPDK官方文档原文:http://doc.dpdk.org/guides-20.02/prog_guide/ring_lib.html 针对自己的理解做了一些辅助解释. 1 前置知识 1.1 ...
- Kali Linux 2020.1安装以及安装后要做的事
Kali Linux是基于Debian的Linux发行版,预装了许多渗透测试软件,让大家从各种繁琐的软件安装中解脱出来,专注于测试本身. 本文章介绍了如何安装目前最新的2020.1版本,以及安装好后补 ...
- Redis设计原理简介
学完MySQL InnoDB之后,又开始学习和研究Redis. 首先介绍下书:<Redis设计与实现>第二版 黄健宏著,机械工业出版社,388页,基于redis3.0版本.版本有点低,这个 ...