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)优点:有缓存,而且是二级缓存: ...
随机推荐
- Unity3D 3D模型在GUI之上显示
原来旧的办法是,在主相机上加一个Panel,把3D模型显示在Panel上面,感觉这个方法不怎么好,现在进行改进: 现在用了两个相机,一个相机显示3D模型,另外一个是主相机.还需要GUITexture来 ...
- HBase基础之Hbase shell常用操作
一般操作 查看服务器状态 status 查看hbase版本 version DDL操作 创建表 create 'member','member_id','address','info' 创建了3个列族 ...
- 在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection
首先这是动态ip配置成功的结果 接下来切换到root用户来配置静态的 按照静态ip的配置方法配置好文件后(具体过程这里就不多加说明) 然后保存退出 当我们重启网卡的时候问题来了(因为本人有点强迫症,多 ...
- VFS文件系统结构分析
VFS是Linux非常核心的一个概念,linux下的大部分操作都要用到VFS的相关功能.这里从使用者的角度,对VFS进行了简单说明.使用者不但需要知道Linux下有哪些文件操作的函数,还需要对VFS的 ...
- Ubuntu下mysql的卸载重装
注:该方法是彻底删除ubuntu下面的文件,然后重新安装,更新root密码,所以mysql原数据会被删掉,所以一定一定要记得备份!!!!!!!! 转自:http://blog.csdn.net/chu ...
- express基础
express框架 const express = require("express"); 引入express框架 var app= express(); 实例化 相当于构造函 ...
- 在oracle下如何创建database link全面总结
物理上存放于网络的多个ORACLE数据库,逻辑上可以看成一个单一的大型数据库,用户可以通过网络对异地数据库中的数据进行存取,而服务器之间的协同处理对于工作站用户及应用程序而言是完全透明的,开发人员无需 ...
- sqlserver查询---分配cpu等资源
数据库资源按需分配 https://www.cnblogs.com/i6first/p/4138365.html https://blog.csdn.net/kk185800961/article/d ...
- 2. 修改myeclipse默认用户和时间
方法一:将 @author 属性写死 . 通过菜单 Window->Preference 打开参数设置面板,然后选择: 1.Java -> Code Style -> Code Te ...
- springboot - mybatis - 下划线与驼峰自动转换 mapUnderscoreToCamelCase
以前都是在mybatis.xml中来配置,但是spring boot不想再用xml配置文件.网上搜寻了好久,才找到设置办法:sessionFactoryBean.getObject().getConf ...