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 void add() {
// 设置数据库连接信息 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 void update() {
// 设置数据库连接信息 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 void delete() {
// 设置数据库连接信息 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 void queryValue() {
// 设置数据库连接信息 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 void queryObject() {
// 设置数据库连接信息 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 void queryList() {
// 设置数据库连接信息 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 void setUsername(String username) { this.username = username; }
public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }
@Override public String toString() { return "User [username=" + username + ", password=" + password + "]"; }
} |
【made by siwuxie095】
posted on 2017-08-22 23:09 siwuxie095 阅读(788) 评论(0) 编辑 收藏 举报