当前位置:网站首页>JdbcTemplate概述和测试
JdbcTemplate概述和测试
2022-08-04 21:01:00 【执久呀】
目录
JdbcTemplate概述
他是spring框架中提供的一个对象,是对原始繁琐的jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HivernateTenplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等
JdbcTemplate开发步骤
- ①导入spring-jdbc和spring-tx坐标
- ②创建数据库表和实体
- ③创建JdbcTemplate对象
- ④执行数据库操作
数据库中account表
pom.xml中
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
测试java中实体类中
package test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import java.beans.PropertyVetoException;
public class JdbcTemplateTest {
@Test
//测试JdbcTemplate开发步骤
public void test1() throws PropertyVetoException {
//创建数据源对象
ComboPooledDataSource dataSource=new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
//位置为本地,3306端口,test数据库
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
//用户名
dataSource.setUser("root");
//用户密码
dataSource.setPassword("123456");
JdbcTemplate jdbcTemplate=new JdbcTemplate();
//设置数据源对象,知道数据库在哪里
jdbcTemplate.setDataSource(dataSource);
//执行操作
int row = jdbcTemplate.update("insert into account value(?,?)", "tom", 5000);
System.out.println(row);
}
}
domain包下的account类下
package domain;
public class Account {
private String name;
private double money;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
@Override
public String toString() {
return "Account{" +
"name='" + name + '\'' +
", money=" + money +
'}';
}
}
运行结果:

数据库中的test数据库,account表

Spring产生JdbcTemplate对象
测试插入
仔细看,这些都是参数注入(用了setXxx。。),我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DateSource注入到JdbcTemplate模版对象中,配置如下:
在test测试包下创建一系列

在applicationContext1.xml下
<?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="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
<property name="user" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- jdbc模版对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>pom.xml中
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>javaMaven02</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<!-- 导入json相关依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
</dependencies>
</project>JdbcTemplateTest类下
public class JdbcTemplateTest {
@Test
//测试Spring产生jdbcTemplate对象
public void test2() throws PropertyVetoException {
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext1.xml");
JdbcTemplate jdbcTemplate=app.getBean(JdbcTemplate.class);
int row = jdbcTemplate.update("insert into account value(?,?)", "KC", 50000);
System.out.println(row);
}
}运行结果:

数据库中的变化

边栏推荐
猜你喜欢

1、File对象学习

STP基本配置及802.1D生成树协议的改进

OD-Model【6】:YOLOv2

Tear down the underlying mechanism of the five JOINs of SparkSQL

How to carry out AI business diagnosis and quickly identify growth points for cost reduction and efficiency improvement?

PowerCLi 批量配置NTP

经验分享|盘点企业进行知识管理时的困惑类型

SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值试读版

帝国CMS仿核弹头H5小游戏模板/92game帝国CMS内核仿游戏网整站源码

用 Excel 爬取网络数据的四个小案例
随机推荐
88. (the home of cesium) cesium polymerization figure
【数据挖掘】搜狐公司数据挖掘工程师笔试题
Configure laravel queue method using fort app manager
Matlab画图2
dotnet 通过 WMI 获取系统安装软件
js的new Function()常用方法
机器学习_02
五分钟入门文本处理三剑客grep awk sed
【TypeScript】深入学习TypeScript枚举
c语言小项目(三子棋游戏实现)
顺序队列
两种白名单限流方案(redis lua限流,guava方案)
数据仓库(1)什么是数据仓库,数仓有什么特点
Qt Designer生成的图形可以自适应窗口的大小变化
项目难管理?先学会用好甘特图(内附操作方法及实用模板)
Zero-knowledge proof - zkSNARK proof system
如何最简单、通俗地理解爬虫的Scrapy框架?
【随记】新一天搬砖 --20220727
【2022杭电多校5 1003 Slipper】多个超级源点+最短路
路由中的meta、params传参的一些问题(可传不可传,为空,搭配,点击传递多次参数报错)