------------------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. 【转载】Linux内存中buffer和 cached的比较

    经常遇到一些刚接触Linux的新手会问内存占用怎么那么多? 在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是linux内存管理的一个优秀特性,在 ...

  2. Android RIL Architecture

    Android RIL Architecture   by Gomathi Sankar   Introduction   The Article explains about the buildin ...

  3. HttpClient上传下载文件

    HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...

  4. 第10章 线程控制(5)_多线程下的fork

    6. 线程和fork 6.1 多线程下的fork (1)历史包袱 ①fork与多线程的协作性很差,这是POSIX系统操作系统的历史包袱. ②长期以来程序都是单线程的,fork运行正常,但引入线程这后, ...

  5. MyBatis 中#与$的区别

    今天在工作中有个点击排序的功能调试了许久,终寻因,总结之.  需求是这样的,页面有个table,有一列的上下箭头可点击并排序.对于这种需求,我的mybatis.xml的sql配置写成了如下: < ...

  6. JS修改属性,六种数据类型

    JS修改属性 一般修改单个属性是通过JS修改的,比较方便.改多个属性通过css样式改更方便. 1.特殊:通过JS修改包含"-"符号的属性,例如margin-top // 特殊 修改 ...

  7. UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 120: illegal multibyte sequence

    UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 120: illegal multibyte sequence f ...

  8. 用strings命令查看kafka-log内容 过滤二进制编码

    kafka的log内容格式还不没怎么了解,想快速浏览消息内容的话,除了使用它自带的kafka-console-consumer.sh脚本,还可以直接去看log文件本身,不过内容里有部分二进制字符,通过 ...

  9. java 项目中类找不到异常解决办法

    最后点击Apply and Close就可以了

  10. 机器学习入门-线性判别分析(LDA)1.LabelEncoder(进行标签的数字映射) 2.LinearDiscriminantAnalysis (sklearn的LDA模块)

    1.from sklearn.processing import LabelEncoder 进行标签的代码编译 首先需要通过model.fit 进行预编译,然后使用transform进行实际编译 2. ...