Spring中jdbcTemplate实现增删改查操作
2017-11-08 18:43
681 查看
1、 spring 框架一站式框架
(1)针对 javaee 三层,每一层都有解决技术
(2)在 dao 层,使用 jdbcTemplate
2、 spring 对不同的持久化层技术都进行封装
(1)jdbcTemplate对jdbc进行封装
3 、jdbcTemplate 使用和 dbutils 使用很相似,都数据库进行 crud 操作
(1)Spirng 基础包(不一定都需要)
(2)jdbcTemplate 包
(3)jdbc-mysql 驱动包
2、新建数据库
(1)本地服务器 localhost,用户名 root,密码为空
(2)新建数据库 spring
(3)新建数据表 user,三个字段,分别是 id,username,password
package com.liuyanzhao.jdbc;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import java.sql.*;
import java.util.List;
public class JdbcTemplateDemo1 {
//1 添加操作
@Test
public void saveUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用jdbcTemplate对象里的方法实现操作
String sql = "insert into user values(?,?,?)";
int rows = jdbcTemplate.update(sql,1,"刘曌","123456");
System.out.println(rows);
}
//2 更新操作
@Test
public void updateUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用jdbcTemplate对象里的方法实现操作
String sql = "update user set username=?,password=? where id=?";
int rows = jdbcTemplate.update(sql,"刘言曌","666666",1);
System.out.println(rows);
}
//3 删除操作
@Test
public void removeUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用jdbcTemplate对象里的方法实现操作
String sql = "delete from user where id=?";
int rows = jdbcTemplate.update(sql,1);
System.out.println(rows);
}
}
1、查询记录总数,返回一个整数
// 4 查询表中有多少数据
@Test
public void countUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用方法得到记录数
String sql = "select count(*) from user";
int count = jdbcTemplate.queryForObject(sql,Integer.class);
System.out.println(count);
}
2、查询单个对象,返回一个对象
(1)新建 user 实体类
package com.liuyanzhao.jdbc;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
(2)新建 MyRowMapper 类,我们可以把它放到 JdbcTemplateDemo1 类中
class MyRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int num) throws SQLException {
//从结果集中得到数据
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
//把得到的数据封装到对象里面
User user = new User();
user.setId(id);
user.setUsername(username);
user.setPassword(password);
return user;
}
}
(3)查询单条记录信息
//5、查询返回对象
@Test
public void getUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//调用方法得到对象
String sql = "select * from user where username=?";
User user = jdbcTemplate.queryForObject(sql,new MyRowMapper(),"刘言曌");
System.out.println(user);
}
3、查询多条记录,返回一个 list 集合
(1)同上
(2)同上
(3)查询多条记录信息
//7、查询返回集合
@Test
public void listUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用方法得到集合
String sql = "select * from user";
List<User> list = jdbcTemplate.query(sql,new MyRowMapper());
System.out.println(list);
}
jdbcTemplate 和 原生 JDBC 代码的区别
//5、查询返回对象,原生JDBC代码
@Test
public void getUserByJDBC() throws SQLException {
final String URL = "jdbc:mysql://127.0.0.1:3306/spring?useUnicode=true&characterEncoding=utf8";
final String USERNAME = "root";
final String PASSWORD = "";
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
String sql = "select * from user where username=?";
//预编译sql
ptmt = conn.prepareStatement(sql);
//设置参数值
ptmt.setString(1,"刘言曌");
//执行sql
rs = ptmt.executeQuery();
//遍历结果集
while (rs.next()) {
//得到返回值
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
//放到user对象中
User user = new User();
user.setId(id);
user.setUsername(username);
user.setPassword(password);
System.out.println(user);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//关闭连接
rs.close();
ptmt.close();
conn.close();
}
}
参考:传智播客视频
本文链接:https://liuyanzhao.com/5689.html
(1)针对 javaee 三层,每一层都有解决技术
(2)在 dao 层,使用 jdbcTemplate
2、 spring 对不同的持久化层技术都进行封装
(1)jdbcTemplate对jdbc进行封装
3 、jdbcTemplate 使用和 dbutils 使用很相似,都数据库进行 crud 操作
实现准备
1、导入 jar 包(1)Spirng 基础包(不一定都需要)
(2)jdbcTemplate 包
(3)jdbc-mysql 驱动包
2、新建数据库
(1)本地服务器 localhost,用户名 root,密码为空
(2)新建数据库 spring
(3)新建数据表 user,三个字段,分别是 id,username,password
增加,删除,修改
JdbcTemplateDemo1package com.liuyanzhao.jdbc;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import java.sql.*;
import java.util.List;
public class JdbcTemplateDemo1 {
//1 添加操作
@Test
public void saveUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用jdbcTemplate对象里的方法实现操作
String sql = "insert into user values(?,?,?)";
int rows = jdbcTemplate.update(sql,1,"刘曌","123456");
System.out.println(rows);
}
//2 更新操作
@Test
public void updateUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用jdbcTemplate对象里的方法实现操作
String sql = "update user set username=?,password=? where id=?";
int rows = jdbcTemplate.update(sql,"刘言曌","666666",1);
System.out.println(rows);
}
//3 删除操作
@Test
public void removeUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用jdbcTemplate对象里的方法实现操作
String sql = "delete from user where id=?";
int rows = jdbcTemplate.update(sql,1);
System.out.println(rows);
}
}
查询
查询分为 “查询记录总数”,“查询单个记录”,“查询多个记录”1、查询记录总数,返回一个整数
// 4 查询表中有多少数据
@Test
public void countUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用方法得到记录数
String sql = "select count(*) from user";
int count = jdbcTemplate.queryForObject(sql,Integer.class);
System.out.println(count);
}
2、查询单个对象,返回一个对象
(1)新建 user 实体类
package com.liuyanzhao.jdbc;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
(2)新建 MyRowMapper 类,我们可以把它放到 JdbcTemplateDemo1 类中
class MyRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int num) throws SQLException {
//从结果集中得到数据
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
//把得到的数据封装到对象里面
User user = new User();
user.setId(id);
user.setUsername(username);
user.setPassword(password);
return user;
}
}
(3)查询单条记录信息
//5、查询返回对象
@Test
public void getUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//调用方法得到对象
String sql = "select * from user where username=?";
User user = jdbcTemplate.queryForObject(sql,new MyRowMapper(),"刘言曌");
System.out.println(user);
}
3、查询多条记录,返回一个 list 集合
(1)同上
(2)同上
(3)查询多条记录信息
//7、查询返回集合
@Test
public void listUser() {
//1、创建对象,设置数据库信息
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/spring" +
"?useUnicode=true&characterEncoding=utf8");
dataSource.setUsername("root");
dataSource.setPassword("");
//2、创建jdbcTemplate对象,设置数据源
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//3、调用方法得到集合
String sql = "select * from user";
List<User> list = jdbcTemplate.query(sql,new MyRowMapper());
System.out.println(list);
}
补充
我们这里补充一下 原生的 JDBC 查询单条记录的代码,复习一下 JDBC,同时比较一下 Spring 的jdbcTemplate 和 原生 JDBC 代码的区别
//5、查询返回对象,原生JDBC代码
@Test
public void getUserByJDBC() throws SQLException {
final String URL = "jdbc:mysql://127.0.0.1:3306/spring?useUnicode=true&characterEncoding=utf8";
final String USERNAME = "root";
final String PASSWORD = "";
Connection conn = null;
PreparedStatement ptmt = null;
ResultSet rs = null;
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
String sql = "select * from user where username=?";
//预编译sql
ptmt = conn.prepareStatement(sql);
//设置参数值
ptmt.setString(1,"刘言曌");
//执行sql
rs = ptmt.executeQuery();
//遍历结果集
while (rs.next()) {
//得到返回值
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
//放到user对象中
User user = new User();
user.setId(id);
user.setUsername(username);
user.setPassword(password);
System.out.println(user);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//关闭连接
rs.close();
ptmt.close();
conn.close();
}
}
参考:传智播客视频
本文链接:https://liuyanzhao.com/5689.html
相关文章推荐
- SpringBoot----利用JdbcTemplate实现增删查改操作
- SpringMVC+Spring Data JPA实现增删改查操作
- SpringMVC Resetful+Hibernate+MySQL实现增删改查操作
- JS实现数组的增删改查操作示例
- SpringBoot JPA实现增删改查、分页、排序、事务操作等功能
- Mybatis(一)—实现对数据库的增删改查操作
- spring入门(12)-spring与hibernate整合完成增删改查的操作(继承HibernateDaoSupport调用hibernateTemplate类)
- jquery-easyui实现页面布局和增删改查操作(SSH2框架支持)
- 使用MyBatis对表执行增删改查操作——基于注解的实现
- 使用springmvc+mybatis实现增删改查并进行登录注册功能
- Java连接MySQL数据库实现增删改查操作!
- mybatis+springMVC对新闻的增删改查操作(查询分页)
- Spring与SpringMVC整合,以及实现数据库数据的增删查改和分页操作
- ExtJs实现EditGrid中的增删改查操作(2)
- Android开发(10)使用SQLiteDatabase操作SQLite数据库实现增删改查(源码)
- PHP实现对xml进行简单的增删改查(CRUD)操作示例
- Java实现对cookie的操作(增删改查)(未测试)
- spring+mybatis省去重复工作的增删改查编码模式设计---------有自己实现mybatis的需要
- Mongodb与spring集成(3)------MongoRepository实现增删改查和复杂查询
- Android学习--------实现增删改查数据库操作以及实现相似微信好友对话管理操作