------------------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. ASP.NET Web Pages:表单

    ylbtech-.Net-ASP.NET Web Pages:表单 1.返回顶部 1. ASP.NET Web Pages - HTML 表单 表单是 HTML 文档中放置输入控件(文本框.复选框.单 ...

  2. MySQL concat用法举例

    concat配合information_schema的应用 1    concat的一般用法主要是用于拼接 示例: 执行语句 SELECT CONCAT('M','y','S','Q','L') 可以 ...

  3. [UE4]通过代码改变材质

    OrangeMaterial = ConstructorStatics.OrangeMaterial.Get(); , OrangeMaterial); 使用到的结构体如下: struct FCons ...

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

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

  5. 【Unix网络编程】chapter6 IO复用:select和poll函数

    chapter6 6.1 概述 I/O复用典型使用在下列网络应用场合. (1):当客户处理多个描述符时,必须使用IO复用 (2):一个客户同时处理多个套接字是可能的,不过不叫少见. (3):如果一个T ...

  6. Solr优化案例分析

    随着umc接入主机的数量越来越多,每天产生的syslog日志数量也在剧增, 之前一天产生的syslog数量才不 到1W,随着整个集团的网络设备不端接入,导致现在每天产生的syslog数量大概在180w ...

  7. php的精确计算

    引言:一定要确保数据的准确性.这是一个好的程序员的基本素养. <?php /** * 精确加法 * @param [type] $a [description] * @param [type] ...

  8. 2. java获取下周日-下周六的时间

    String[] arrDate = new String[7]; String[] arrWeek = new String[7]; int mondayPlus = 0; Calendar cd ...

  9. spring securiry Xml 配置 登陆

    参考:https://blog.csdn.net/yin380697242/article/details/51893397 https://blog.csdn.net/lee353086/artic ...

  10. leetcode405

    public class Solution { string ConverToHex(string bit) { var s = ""; switch (bit) { " ...