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)优点:有缓存,而且是二级缓存: ...
随机推荐
- 【转载】Linux内存中buffer和 cached的比较
经常遇到一些刚接触Linux的新手会问内存占用怎么那么多? 在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是linux内存管理的一个优秀特性,在 ...
- Android RIL Architecture
Android RIL Architecture by Gomathi Sankar Introduction The Article explains about the buildin ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...
- 第10章 线程控制(5)_多线程下的fork
6. 线程和fork 6.1 多线程下的fork (1)历史包袱 ①fork与多线程的协作性很差,这是POSIX系统操作系统的历史包袱. ②长期以来程序都是单线程的,fork运行正常,但引入线程这后, ...
- MyBatis 中#与$的区别
今天在工作中有个点击排序的功能调试了许久,终寻因,总结之. 需求是这样的,页面有个table,有一列的上下箭头可点击并排序.对于这种需求,我的mybatis.xml的sql配置写成了如下: < ...
- JS修改属性,六种数据类型
JS修改属性 一般修改单个属性是通过JS修改的,比较方便.改多个属性通过css样式改更方便. 1.特殊:通过JS修改包含"-"符号的属性,例如margin-top // 特殊 修改 ...
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 120: illegal multibyte sequence
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 120: illegal multibyte sequence f ...
- 用strings命令查看kafka-log内容 过滤二进制编码
kafka的log内容格式还不没怎么了解,想快速浏览消息内容的话,除了使用它自带的kafka-console-consumer.sh脚本,还可以直接去看log文件本身,不过内容里有部分二进制字符,通过 ...
- java 项目中类找不到异常解决办法
最后点击Apply and Close就可以了
- 机器学习入门-线性判别分析(LDA)1.LabelEncoder(进行标签的数字映射) 2.LinearDiscriminantAnalysis (sklearn的LDA模块)
1.from sklearn.processing import LabelEncoder 进行标签的代码编译 首先需要通过model.fit 进行预编译,然后使用transform进行实际编译 2. ...