(六)Spring 中的 JdbcTemplate
目录
概念
JdbcTemplate : 是 Spring 中对持久层(JDBC 技术)一个封装 ;
使用起来和 Dbutuis 很相似 ;(其实 JdbcTemplate 还不如 Dbutils,看着 Spring 的面子,学一下 ;)
配置数据库
// 配置数据库,配置数据源
DriverManagerDataSource dataSource = new DriverManagerDataSource() ;
// 配置数据库驱动
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
// 设置数据库URI
dataSource.setUrl("jdbc:mysql:///springDay03");
// 配置管理员账号密码
dataSource.setUsername("root");
dataSource.setPassword("root");
创建 JdbcTemplate 对象
// 创建 jdbcTemplate 模板
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource) ;
增删改查代码
跟 Dbutils 操作差不多
增删改,都是调用 update 方法,操作方法跟 Dbutils 基本一致 ;
// 增
String sql = "insert into user value(?,?,?)" ;
jdbcTemplate.update(sql,new Object[]{"001","蜡笔小新","123456"}) ;
// 改
sql = "update user set password = ? where id = ?" ;
jdbcTemplate.update(sql,new Object[]{"0000","001"}) ;
// 删
sql = "DELETE from user where id = ?" ;
jdbcTemplate.update(sql,"001") ;
在查询的时候, JdbcTemplate 跟 Dbutils 都一样,都提供一个接口,让我们实现我们自己的处理逻辑 ;JdbcTemplate 给出的接口是:RowMapper ;
说 JdbcTemplate 还不如 Dbutils 的原因,就在于:JdbcTemplate 竟然,没有提供基本的实现类给我们。。
查询返回当个结果(
queryForObject(sql,泛型))sql = "select COUNT(*) FROM USER " ;
int num = jdbcTemplate.queryForObject(sql,Long.class).intValue() ;查询返回当个对象(
queryForObject(sql, new RowMapper<泛型>,可变参数)sql = "select * from user where id = ?" ;
User user = jdbcTemplate.queryForObject(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
String name = resultSet.getString("name") ;
String password = resultSet.getString("password") ;
User user = new User() ;
user.setName(name);
user.setPassword(password);
return user;
}
},"1");
查询返回
list集合(query)
sql = "select * from user " ;
List<User> users = jdbcTemplate.query(sql, new RowMapper<User>() {
// 这里的第二个参数是,代表本当前装进list是第几个对象,从0开始计数 ;
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
String name = resultSet.getString("name") ;
String password = resultSet.getString("password") ;
User user = new User() ;
user.setName(name);
user.setPassword(password);
return user;
}
});
(六)Spring 中的 JdbcTemplate的更多相关文章
- Spring中的JDBCTemplate
src\dayday\JDBCTestTest package dayday;import com.sun.org.apache.xalan.internal.xsltc.compiler.Templ ...
- Spring中的JdbcTemplate使用
1.引出SpringJDBC的概念 在学习JDBC编程时我们会感觉到JDBC的操作是多么繁琐,那么当我们学习的Hibernate框架时,我们感觉到数据库的操作也变非常简单,提高了开发效率.但是当使用H ...
- Spring中的JdbcTemplate的使用
一.jdbcTemplate的作用 它就是用于和数据库交互的,实现对表的crud.与dbutils相似 二.JdbcTemplate的使用 <dependency> <groupId ...
- Spring 中的 JDBCTemplate
新建一个java工程 写好spring配置文件,直接上代码 <?xml version="1.0" encoding="UTF-8"?> <b ...
- spring 中的设计模式
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...
- Spring中的设计模式学习
Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想. 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. ...
- Spring中的设计模式
[Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用] [http://www.geek521.c ...
- Spring中使用的设计模式
目录 Spring使用的设计模式 1.单例模式 2.原型模式 3.模板模式 4.观察者模式 5.工厂模式 简单工厂模式 工厂方法模式 6.适配器模式 7.装饰者模式 8.代理模式 9.策略模式 S ...
- 详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设 ...
随机推荐
- Android原生编解码接口 MediaCodec 之——踩坑
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/gb702250823/article/d ...
- c++ 容器切片反转次序(不拷贝到新容器)
// rotate algorithm example #include <iostream> // cout #include <algorithm> // rotate # ...
- AE开发之shp转txt
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 如何确定哪个SMB客户端/会话在Server 2008R2 Windows文件服务器上打开了特定文件?
参考: http://www.kbase101.com/question/54969.html NetworkOpenedFiles v1.25 https://www.nirsoft.net/ut ...
- ORM SQLAlchemy - 建立一个关系 relationship
relationship函数是sqlalchemy对关系之间提供的一种便利的调用方式, backref参数则对关系提供反向引用的声明 1 背景 如没有relationship,我们只能像下面这样调用关 ...
- ffmpeg+nginx搭建直播服务器
Nginx与Nginx-rtmp-module搭建RTMP视频直播和点播服务器 https://zhuanlan.zhihu.com/p/28009037 FFmpeg总结(十三)用ffmpeg基于n ...
- Swift 自动引用计数(ARC)
Swift 使用自动引用计数(ARC)这一机制来跟踪和管理应用程序的内存 通常情况下我们不需要去手动释放内存,因为 ARC 会在类的实例不再被使用时,自动释放其占用的内存. 但在有些时候我们还是需要在 ...
- 在CSS中定义【导航栏】超链接样式
1.案例css代码 <style> .divcss5 a:link{ color:#F00}/* 链接默认为红色 */ .divcss5 a:hover{ color:#000}/* 鼠标 ...
- c++ throw异常(学习)
#include <iostream>#include <stdio.h> using namespace std; void my_copy(const char* src_ ...
- LODOP纸张高度不定的纯文本累计高度
小票由于纸张没有确定的高度,根据内容多少,小票打印机出多少纸,在设置纸张的时候,需要把纸张设置成不定高的纸张.简短问答:小票打印 ,参考样例18 http://www.c-lodop.com/demo ...