JdbcTemplate实现CRUD操作
------------------siwuxie095
JdbcTemplate 实现 CRUD 操作
1、JdbcTemplate 是 Spring 的 JDBC 模板,对 JDBC 进行了封装
2、Spring 对不同持久化技术的支持如下:
ORM 持久化技术 |
模板类 |
JDBC |
JdbcTemplate |
Hibernate |
HibernateTemplate |
iBatis |
SqlMapClientTemplate |
MyBatis |
SqlSessionTemplate |
JPA |
JpaTemplate |
Spring 为各种持久化技术都提供了模板类,对它们进行封装,
以简化编程
参考链接:
http://blog.csdn.net/u011225629/article/details/47143177
3、导入
jar 包(共 9 个包)
(1)导入核心 jar 包和日志相关的 jar 包
(2)导入
JdbcTemplate 的 jar 包
(3)导入
MySQL 的 JDBC 驱动包
mysql-connector-java
下载链接:
https://dev.mysql.com/downloads/connector/j/
4、具体步骤
(1)设置数据库连接信息
(2)创建 JdbcTemplate 对象,设置数据源
(3)调用 JdbcTemplate 对象的方法实现 CRUD 操作
5、在
MySQL 中手动创建数据库和表
数据库名:spring_db,表名:user,字段:username、password
6、具体实现
(1)添加操作
AddDemo.java:
package com.siwuxie095.jdbc; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 添加操作 */ public class AddDemo { /** * 手动加上 @Test 以进行单元测试(将自动导入 JUnit 4 的 jar 包) * * 选中方法名,右键->Run As->JUint Test */ @Test public
// 设置数据库连接信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306 dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db"); dataSource.setUsername("root"); dataSource.setPassword("8888");
// 创建 JdbcTemplate 对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
// 使用 jdbcTemplate 的方法实现添加操作 // // 创建 sql 语句 String sql="insert into user values(?,?)";
// 调用 update() 方法实现添加,返回值是 int 型, // 创建以接收,表示在数据库中影响的行数 int row=jdbcTemplate.update(sql, "小明","1234"); System.out.println(row); }
} |
(2)修改操作
UpdateDemo.java:
package com.siwuxie095.jdbc; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 修改操作 */ public class UpdateDemo { @Test public
// 设置数据库连接信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306 dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db"); dataSource.setUsername("root"); dataSource.setPassword("8888");
// 创建 JdbcTemplate 对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
// 使用 jdbcTemplate 的方法实现修改操作 // // 创建 sql 语句 String sql="update user set password=? where username=?";
// 调用 update() 方法实现修改,返回值是 int 型, // 创建以接收,表示在数据库中影响的行数 int row=jdbcTemplate.update(sql, "1314","小明"); System.out.println(row); }
} |
(3)删除操作
DeleteDemo.java:
package com.siwuxie095.jdbc; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 删除操作 */ public class DeleteDemo { @Test public
// 设置数据库连接信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306 dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db"); dataSource.setUsername("root"); dataSource.setPassword("8888");
// 创建 JdbcTemplate 对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
// 使用 jdbcTemplate 的方法实现删除操作 // // 创建 sql 语句 String sql="delete from user where username=?";
// 调用 update() 方法实现删除,返回值是 int 型, // 创建以接收,表示在数据库中影响的行数 int row=jdbcTemplate.update(sql, "小明"); System.out.println(row); }
} |
(4)查询操作
QueryDemo.java:
package com.siwuxie095.jdbc; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 查询操作 * * JdbcTemplate 通过接口 RowMapper 实现查询,但 * JdbcTemplate 没有提供该接口的实现类,所以,要 * 得到不同类型的数据,需要自己进行封装 * * 查询操作分为三类: * * (1) 查询,返回一个值 * (2) 查询,返回一个对象 * (3) 查询,返回一个 List 集合 * */ public class QueryDemo { /** * (1) 查询,返回一个值 */ @Test public
// 设置数据库连接信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306 dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db"); dataSource.setUsername("root"); dataSource.setPassword("8888");
// 创建 JdbcTemplate 对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
// 使用 jdbcTemplate 的方法得到记录数 // // 创建 sql 语句 String sql="select count(*) from user";
// 调用 queryForObject() 方法,传入 sql 语句和返回类型的 class int count=jdbcTemplate.queryForObject(sql, Integer.class); System.out.println(count); }
/** * (2) 查询,返回一个对象 */ @Test public
// 设置数据库连接信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306 dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db"); dataSource.setUsername("root"); dataSource.setPassword("8888");
// 创建 JdbcTemplate 对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
// 使用 jdbcTemplate 的方法得到对象 // // 创建 sql 语句 String sql="select * from user where username=?";
// 调用 queryForObject() 方法,传入 sql 语句、 // 接口 RowMapper 的实现类的对象、要查询的值 User user=jdbcTemplate.queryForObject(sql, new MyRowMapper(), "小明"); System.out.println(user); }
/** * (3) 查询,返回一个 List 集合 */ @Test public
// 设置数据库连接信息 DriverManagerDataSource dataSource=new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); // 或使用 jdbc:mysql:///spring_db 代替,省略 localhost:3306 dataSource.setUrl("jdbc:mysql://localhost:3306/spring_db"); dataSource.setUsername("root"); dataSource.setPassword("8888");
// 创建 JdbcTemplate 对象,设置数据源 JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
// 使用 jdbcTemplate 的方法得到 List 集合 // // 创建 sql 语句 String sql="select * from user";
// 调用 query() 方法,传入 sql 语句 // 和接口 RowMapper 的实现类的对象 List<User> list=jdbcTemplate.query(sql, new MyRowMapper()); System.out.println(list); }
} // 多个类,在同一个文件中,最多有一个是 public 权限的 class MyRowMapper implements RowMapper<User> { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException {
// 从结果集中拿数据,并封装到对象中 String username=rs.getString("username"); String password=rs.getString("password");
User user=new User(); user.setUsername(username); user.setPassword(password);
return user; } } |
User.java:
package com.siwuxie095.jdbc; public class User { private String username; private String password;
public String getUsername() { return username; } public this.username = username; }
public String getPassword() { return password; } public this.password = password; }
@Override public String toString() { return }
} |
【made by siwuxie095】
JdbcTemplate实现CRUD操作的更多相关文章
- spring jdbcTemplate的CRUD操作
一.jdbcTemplate准备 1.导入与jdbcTemplate相关的jar包 2.设置数据库信息 3.创建jdbcTemplate对象,设置数据源 二.添加操作 1.代码 2.结果 三.修改操作 ...
- 阶段3 2.Spring_09.JdbcTemplate的基本使用_4 JdbcTemplate的CRUD操作
复制demo起名3 保存 update delete selct 有这么多的重载方法 如何去定位 可变参数是JDK1.5版本之后才有的东西 RowMapper 实现RowMapper这个接口.然后实现 ...
- 【翻译】MongoDB指南/CRUD操作(四)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...
- 【翻译】MongoDB指南/CRUD操作(三)
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- 【翻译】MongoDB指南/CRUD操作(一)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...
- ASP.NET Core Web API Cassandra CRUD 操作
在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将 ...
- MongoDB的CRUD操作
1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...
- 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】
一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...
随机推荐
- js在html文件中的解析顺序
我们可以将JavaScript代码放在html文件中任何位置,但是我们一般放在网页的head或者body部分. 放在<head>部分 最常用的方式是在页面中head部分放置<scri ...
- redis 导出
1 安装redis: apt update apt-get install redis-server 2: cd /etc/redis 3: 用redis-cli导出key redis-cli -h ...
- CSS3 圆角属性 border-radius和-webkit-border-radius使用
CSS3 圆角属性 border-radius 在 CSS3 中新增了一个 border-radius 边框半径属性,即大家常用的圆角效果.这使得制作圆角将不再麻烦,只需对所用对象加一个 border ...
- 基于Linux的Samba开源共享解决方案测试(四)
对于客户端的网络监控如图: 双NAS网关100Mb码率视音频文件的稳定读测试结果如下: 100Mb/s负载性能记录 NAS网关资源占用 稳定写 稳定写 CPU空闲 内存空闲 网卡占用 NAS1 8个稳 ...
- Linux查看进程,端口,访问url
# 查看进程# ps -ef|grep python# 终止进程# kill -9 id # 端口 netstat -ntl # 显示正在监听的tcp端口,以端口号显示 netstat -apn|gr ...
- 查看虚拟机CENTOS7 的 IP 地址和命令
用于生产环境下 安装CENTOS7 太费时间, 研究阶段 放在虚拟机里面 是最好的选择: 但是安装完毕后 就出现问题 无法使用IFCONFIG : 毕竟 内核不一样 首先我们登录操作系统 用 ...
- linux case ${variable} in
脚本实现划分考试等级层次;
- jdk配置(备份)
#####set java environment #export JAVA_HOME=/usr/java/jdk1..0_172 #export JRE_HOME=${JAVA_HOME}/jre ...
- requests bs4 爬取 资讯 图片
#!/usr/bin/env python # Version = 3.5.2 # __auth__ = '无名小妖' import requests from bs4 import Beautifu ...
- WINFORM小列子参考
1.用树型列表动态显示菜单 密码:zx9t 二.Popup窗口提醒(桌面右下角出现) 密码:cjjo 三.台历 密码:nq4m 四.文件复制 密码:lsqj 五.进度条 密码:byti 六 ...