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)优点:有缓存,而且是二级缓存: ...
随机推荐
- POJ 3666 Making the Grade (线性dp,离散化)
Making the Grade Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) T ...
- Game of War - Fire Age 有何特别之处?
作者:福克斯007 链接:https://www.zhihu.com/question/21611550/answer/52458767来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- Ubuntu12.10下Vsftpd的安装
安装Vsftpd sudo apt-get install vsftpd 配置 sudo vim /etc/vsftpd.conf 取消以下两行前面的注释 local_enable=YES write ...
- 一个PHPer的规划
前言:学PHP过时了吗?PHP开发人员如何快速成长?怎么进行职业规划?特别是近几年非常火热的人工智能,机器学习,区块链技术等等,这多少会带动一些人盲目跟风,迷茫等,下面是PHP大牛魏永强带来的一篇根据 ...
- php 编程笔记分享 - 非常实用
php opendir()列出目录下所有文件的两个实例 php opendir()函数讲解及遍历目录实例 php move_uploaded_file()上传文件实例及遇到问题的解决方法 php使用m ...
- Python中的logger和handler到底是个什么鬼
最近的任务经常涉及到日志的记录,特意去又学了一遍logging的记录方法.跟java一样,python的日志记录也是比较繁琐的一件事,在写一条记录之前,要写好多东西.典型的日志记录的步骤是这样的: 创 ...
- 微软SMB 3.0文件共享协议新特性介绍
SMB(*nix平台和Win NT4.0又称CIFS)协议是Windows平台标准文件共享协议.Linux平台通过samba来支持.SMB最新版本v3.0,在v2.0基础上针对WAN和分布式有改进.详 ...
- restful 分风格
参考: https://blog.csdn.net/b671900/article/details/24478283 https://blog.csdn.net/john548/article/de ...
- vue之回车触发表单提交
vue之回车触发表单提交 操作: 在From标签中添加: @keyup.enter.native="handleSubmit" 注意: 1.若添加在Input标签上,只有聚焦在该i ...
- 1.mysql ERROR 1045 (28000): 错误解决办法
转自:https://www.cnblogs.com/jpwz/p/6061214.html ERROR 1045 (28000): Access denied for user 'ODBC'@'lo ...