------------------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】

JdbcTemplate实现CRUD操作的更多相关文章

  1. spring jdbcTemplate的CRUD操作

    一.jdbcTemplate准备 1.导入与jdbcTemplate相关的jar包 2.设置数据库信息 3.创建jdbcTemplate对象,设置数据源 二.添加操作 1.代码 2.结果 三.修改操作 ...

  2. 阶段3 2.Spring_09.JdbcTemplate的基本使用_4 JdbcTemplate的CRUD操作

    复制demo起名3 保存 update delete selct 有这么多的重载方法 如何去定位 可变参数是JDK1.5版本之后才有的东西 RowMapper 实现RowMapper这个接口.然后实现 ...

  3. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  4. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  5. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  6. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  7. ASP.NET Core Web API Cassandra CRUD 操作

    在本文中,我们将创建一个简单的 Web API 来实现对一个 “todo” 列表的 CRUD 操作,使用 Apache Cassandra 来存储数据,在这里不会创建 UI ,Web API 的测试将 ...

  8. MongoDB的CRUD操作

    1. 前言 在上一篇文章中,我们介绍了MongoDB.现在,我们来看下如何在MongoDB中进行常规的CRUD操作.毕竟,作为一个存储系统,它的基本功能就是对数据进行增删改查操作. MongoDB中的 ...

  9. 【Java EE 学习 44】【Hibernate学习第一天】【Hibernate对单表的CRUD操作】

    一.Hibernate简介 1.hibernate是对jdbc的二次开发 2.jdbc没有缓存机制,但是hibernate有. 3.hibernate的有点和缺点 (1)优点:有缓存,而且是二级缓存: ...

随机推荐

  1. js中,object可以调用style对象,[]不可以调用style对象

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" Content=&q ...

  2. [转]IE6 的浮动

    IE6 的一个 BUG,(IE6 双倍边距 BUG),只要满足下面 3 个条件才会出现这个 BUG: 1)要为块状元素: 2)要左侧浮动: 3)要有左外边距(margin-left): 解决这个 BU ...

  3. [转]C#API 实现锁屏+关屏

    http://www.cnblogs.com/1971ruru/archive/2010/05/20/1740216.html public Form1( bool aLock ) { if (aLo ...

  4. request-2高级用法

    会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个session示例发出的所有请求之间保持cookie cookie与session的区别 1.cookie数据存放在客户的浏览器上,sess ...

  5. sql server查看表占用索引空间(小技巧)

    选择表右键—属性—存储—索引空间

  6. uva-301-枚举-组合

    题意:从A市到B市有n个站点,限制火车上搭乘的乘客数目,每个站点都从有一些乘车的订单,订单信息 从x到y,乘客m人,求解最大的收入是多少 最多7个站,22个订单 选取订单的时候没有顺序问题,所以不是全 ...

  7. Centos7修改profile错误导致命令行不能用,情况的解救方案,dir命令不能用

    Linux修改profile文件改错了,恢复的方法 Linux修改profile文件改错了,恢复的方法在改profile的时候,改出问题了,除了cd以外的命令基本都不能用了,连vi都不能用了,上网查了 ...

  8. NLP—WordNet——词与词之间的最小距离

    WordNet,是由Princeton 大学的心理学家,语言学家和计算机工程师联合设计的一种基于认知语言学的英语词典.它不是光把单词以字母顺序排列,而且按照单词的意义组成一个“单词的网络”.我们这次的 ...

  9. 多数据源springboot-jta-atomikos

    参考:  https://github.com/classloader/springboot-jta-atomikos-demo 參考:二 :建议参考  https://blog.csdn.net/a ...

  10. cnapckSurround c++builder Region 代码折叠快捷键

    C++Builder代码折叠 cnapckSurround c++builder Region 代码折叠快捷键,可以导入导出,IDE code edit,cnpack menu surround wi ...