------------------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. [转]Windows 注册自定义的协议

    [转自] http://blog.sina.com.cn/s/blog_86e4a51c01010nik.html 1.注册应用程序来处理自定义协议 你必须添加一个新的key以及相关的value到HK ...

  2. [UE4]Selector和Sequence的区别

    Selector和Sequence子节点都是返回true才会执行下一个子节点. Sequence是从左到右依次执行,左边节点如果返回false,则不会执行右边的节点 Selector会同步执行所有子节 ...

  3. linux开机服务自启

    有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务,主要用三种方式进行这一操作: ln -s             在/etc/rc.d/rc*.d目录中建立/etc/init.d/ ...

  4. [UE4]FString常用API

    转自:http://aigo.iteye.com/blog/2279808 将int或float转换为string: 将FString转换为char*: 将string转换为int或者float: 字 ...

  5. Android之sandbox技术

    ART 虚拟机下Hook工具:VirtualHook http://bbs.pediy.com/thread-216786.htm Github: https://github.com/rk700/V ...

  6. ExtJS 动态组件与组件封装

      介绍几个有用的函数: Ext.apply---追加配置选项Ext.reg,----注册xtypeExt.extend--扩展组件||操作({}|| cfg)fireEvent自定义事件机制 --- ...

  7. 微软SMB 3.0文件共享协议新特性介绍

    SMB(*nix平台和Win NT4.0又称CIFS)协议是Windows平台标准文件共享协议.Linux平台通过samba来支持.SMB最新版本v3.0,在v2.0基础上针对WAN和分布式有改进.详 ...

  8. 软件测试——Peer Review(简介)

    1. 同行评审的种类和对象 同行评审活动的关注点应该是工作产品中的缺陷,而不应该是工作产品的作者或者生产者,管理者也不应使用同行评审的结果去评价个人的行为. 同行评审的分类有很多种,自从IBM的Fag ...

  9. 了解vue

    什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 状态,其实指的是实例之间的 ...

  10. Java操作Sqoop对象

    Windows下使用Eclipse工具操作Sqoop1.4.6对象 Sqoop是用来在关系型数据库与Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Had ...