JAVA入门[18]-JdbcTemplate简单实例
一、关于JdbcTemplate
JdbcTemplate是最基本的Spring JDBC模板,这个模板支持简单的JDBC数据库访问功能以及基于索引参数的查询。
Spring数据访问模板:在数据库操作过程中,有很大一部分重复工作,比如事务控制、管理资源以及处理异常等,Spring的模板类处理这些固定部分。同时,应用程序相关的数据访问在回调的实现中处理,包括语句、绑定参数以及整理结果等。这样一来,我们只需关心自己的数据访问逻辑即可。
Spring的JDBC框架承担了资源管理和异常处理的工作,从而简化了JDBC代码,我们只需要编写从数据库读写数据的必需代码就万事大吉了。
二、Spring JdbcTemplate实例
我们的学习目标就是动手写一个demo,实现对Category的CRUD操作。
1.创建表
mysql新建数据库store,然后执行如下sql:
![](/assets/blank.gif)
2.我用的IDE是IdeaIU,通过maven构建项目,通过xml配置spring。完成后的代码结构为:
3.创建实体类Category
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class Category{
private int cateId;
private String cateName;
public int getCateId() {
return cateId;
}
public void setCateId( int cateId) {
this .cateId = cateId;
}
public String getCateName() {
return cateName;
}
public void setCateName(String cateName) {
this .cateName = cateName;
}
@Override
public String toString() {
return "id=" +cateId+ " name=" +cateName;
}
}
|
4.修改pom.xml,引入相关依赖。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version> 4.12 </version>
</dependency>
<!-- Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version> 5.1 . 21 </version>
<scope>runtime</scope>
</dependency>
</dependencies>
|
5.配置applicationContext.xml
需要配置dataSource作为jdbcTemplate的数据源。然后配置CategoryDao bean,构造注入了jdbcTemplate对象。完整的applicationContext.xml如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?xml version= "1.0" encoding= "UTF-8" ?>
<beans xmlns= "http://www.springframework.org/schema/beans"
xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" >
<bean id= "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name= "driverClassName" value= "com.mysql.jdbc.Driver" ></property>
<property name= "url" value= "jdbc:mysql://localhost:3306/store" ></property>
<property name= "username" value= "root" ></property>
<property name= "password" value= "root" ></property>
</bean>
<bean id= "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate" >
<property name= "dataSource" ref= "dataSource" ></property>
</bean>
<bean id= "categoryDao" class = "CategoryDao" >
<constructor-arg ref= "jdbcTemplate" ></constructor-arg>
</bean>
</beans>
|
6.数据访问实现类CategoryDao
CategoryDao构造函数包含了参数jdbcTemplate,然后实现了常用的数据访问操作。可以看到,我们只要关注具体的sql语句就可以了。另外,在getById()和getAll()方法中使用了lambda语法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
/**
* Created by 陈敬 on 2017/6/6.
*/
public class CategoryDao {
private JdbcTemplate jdbcTemplate;
public CategoryDao(JdbcTemplate jdbcTemplate) {
this .jdbcTemplate = jdbcTemplate;
}
public int add(Category category) {
String sql = "INSERT INTO category(id,name)VALUES(?,?)" ;
return jdbcTemplate.update(sql, category.getCateId(), category.getCateName());
}
public int update(Category category) {
String sql = "UPDATE Category SET Name=? WHERE Id=?" ;
return jdbcTemplate.update(sql, category.getCateName(), category.getCateId());
}
public int delete( int id) {
String sql = "DELETE FROM Category WHERE Id=?" ;
return jdbcTemplate.update(sql, id);
}
public int count(){
String sql= "SELECT COUNT(0) FROM Category" ;
return jdbcTemplate.queryForObject(sql,Integer. class );
}
public Category getById( int id) {
String sql = "SELECT Id,Name FROM Category WHERE Id=?" ;
return jdbcTemplate.queryForObject(sql, (ResultSet rs, int rowNumber) -> {
Category category = new Category();
category.setCateId(rs.getInt( "Id" ));
category.setCateName(rs.getString( "Name" ));
return category;
}, id);
}
public List<Category> getAll(){
String sql= "SELECT Id,Name FROM Category" ;
List<Category> result=jdbcTemplate.query(sql, (resultSet, i) -> {
Category category = new Category();
category.setCateId(resultSet.getInt( "Id" ));
category.setCateName(resultSet.getString( "Name" ));
return category;
});
return result;
}
}
|
7.测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
@ContextConfiguration (locations = "classpath:applicationContext.xml" )
@RunWith (SpringJUnit4ClassRunner. class )
public class testCategoryDao {
@Autowired
private CategoryDao categoryDao;
@Test
public void testAdd() {
Category category = new Category();
category.setCateId( 4 );
category.setCateName( "母婴" );
int result = categoryDao.add(category);
System.out.println(result);
}
@Test
public void testUpdate() {
Category category = new Category();
category.setCateId( 4 );
category.setCateName( "男装" );
int result = categoryDao.update(category);
System.out.println(result);
}
@Test
public void testGetById() {
int id = 4 ;
Category category = categoryDao.getById(id);
System.out.println(category.toString());
}
@Test
public void testGetAll() {
List<Category> categories = categoryDao.getAll();
for (Category item : categories) {
System.out.println(item);
}
}
@Test
public void testCount() {
int count = categoryDao.count();
System.out.println(count);
}
@Test
public void testDelete() {
int id = 4 ;
int result = categoryDao.delete(id);
System.out.println(result);
}
}
|
完整代码:https://github.com/cathychen00/learnjava/tree/master/DemoJdbcTemplate
本文转自 陈敬(Cathy) 博客园博客,原文链接http://www.cnblogs.com/janes/p/6971839.html:,如需转载请自行联系原作者
JAVA入门[18]-JdbcTemplate简单实例相关推荐
- 用Java 开发 WebService Axis简单实例
用 Java 开发 WebService Axis 简单实例 在开发之前, 先了解一下AXIS,axis目前出现的2版本以其灵活性,快速开发工具的集成高于xfire而使用者居其上.用Eclipse开发 ...
- Java入门 18 3\25
Java入门 18 3\25 接口(interface) ( A is a B A/B是子父类的关系.B是父类,A是子类.) 接口的使用 接口使用interface来定义. Java中,接口和类是并列 ...
- Appium+Java环境搭建及简单实例
Appium+Java环境搭建及简单实例 一.下载jdk并配置好环境 二.下载Android-sdk并配置好环境 三.下载Eclipse软件 四.下载Node.js 下载地址:https://node ...
- Java入门:绘制简单图形
在上一节,我们学习了如何使用swing和awt工具创建一个空的窗口,本节学习如何绘制简单图形. 基本绘图介绍 Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.aw ...
- Map实现java缓存机制的简单实例
缓存是Java中主要的内容,主要目的是缓解项目访问数据库的压力以及提升访问数据的效率,以下是通过Map实现java缓存的功能,并没有用cache相关框架. 一.缓存管理类 CacheMgr.java ...
- java 抽象工厂模式简单实例
抽象工厂模式:提供一个创建一系列的相关的或者依赖的对象的接口,无需指定它们的具体实现类,具体的时间分别在子类工厂中产生. 类似于工厂模式:隔离了具体类的生产实现,使得替换具体的工厂实现类很容易.包含有 ...
- android java调用c_Android JNI简单实例(android 调用C/C++代码)
Android的jni实例 android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库. c/c++中调用java程序的方法以 ...
- SiteMesh 2学习(1):入门简介和简单实例
SiteMesh简介 * 资料参考: SIteMesh官方地址:http://www.opensymphony.com/sitemesh/ SIteMesh下载地址:http://java.ne ...
- JAVA入门[6]-Mybatis简单示例
初次使用Mybatis,先手写一个hello world级别的例子,即根据id查询商品分类详情. 一.建表 create table Category ( Id INT not null, Name ...
最新文章
- Android恶意软件偷取Uber凭证
- 【算法】二分图的判定
- ueditor上传图片写入数据库_手把手教你,如何用交管12123上传驾驶证照片!
- IIS6.0系统日志中出现此错误Timer_MinBytesPerSecond,Timer_ConnectionIdle
- 第一次用ASP.NET MVC2 做网站
- 设置mybatis 的sql 打印
- Ubuntu16.04+Python3.6+深度学习环境+opencv+x264+ffmpeg基础镜像制作实战
- python水仙花数的代码_Python水仙花数的编程代码写法
- 映美530k驱动不能安装问题
- C语言入门教程,C语言学习教程
- 哪上班 | 好工作近在咫尺
- 【sklearn下的SVM转onnx】
- 2021大厂Java高级面试题及答案,附面试答案
- OSChina 周五乱弹 ——妹子一不小心就被拖到小巷子里
- 还在担心零基础绘画?这篇文章让你少走弯路!
- 个人投资理财太平亿康的五种方式
- svn提交报错Unexpected HTTP status 413 'Request Entity Too Large' on
- .then()方法的意思和用法
- 微信公众号之接入服务器
- Linux GCC简明教程(使用GCC编译C语言程序)