spring 笔记七 Spring JdbcTemplate

文章目录

Spring JdbcTemplate

JdbcTemplate概述

它是spring框架中提供的一个对象,是对原始繁琐的JdbcAPI对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。

JdbcTemplate开发步骤

① 导入spring-jdbc和spring-tx坐标

② 创建数据库表和实体

③ 创建JdbcTemplate对象

④ 执行数据库操作

导入spring-jdbc和spring-tx坐标

java 复制代码
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-jdbc</artifactId>
 <version>5.2.8.RELEASE</version>
 </dependency>
 <!--导入spring的tx坐标-->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-tx</artifactId>
 <version>5.2.8.RELEASE</version>
 </dependency>

创建accout表和Accout实体

java 复制代码
public class Account {
 private String name;
 private double money;
 //省略get和set方法
}

创建JdbcTemplate对象

执行数据库操作

java 复制代码
//1、创建数据源对象
ComboPooledDataSource dataSource= new ComboPooledDataSource();
 dataSource.setDriverClass("com.mysql.jdbc.Driver");
 dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
 dataSource.setUser("root");
 dataSource.setPassword("root");
 //2、创建JdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate();
 //3、设置数据源给JdbcTemplate
 jdbcTemplate.setDataSource(dataSource);
 //4、执行操作
jdbcTemplate.update("insert into account values(?,?)","tom",5000);

Spring产生JdbcTemplate对象

我们可以将JdbcTemplate的创建权交给Spring,将数据源DataSource的创建权也交给Spring,在Spring容器内部将数据源DataSource注入到JdbcTemplate模版对象中,配置如下:

java 复制代码
<!--数据源DataSource-->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
 <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
 <property name="jdbcUrl" value="jdbc:mysql:///test"></property>
 <property name="user" value="root"></property>
 <property name="password" value="root"></property>
 </bean>
 <!--JdbcTemplate-->
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 <property name="dataSource" ref="dataSource"></property>
 </bean>

从容器中获得JdbcTemplate进行添加操作

java 复制代码
@Test
 public void testSpringJdbcTemplate() throws PropertyVetoException{
 ApplicationContext applicationContext= new 
ClassPathXmlApplicationContext("applicationContext.xml");
 JdbcTemplate jdbcTemplate= applicationContext.getBean(JdbcTemplate.class);
 jdbcTemplate.update("insert into account values(?,?)","lucy",5000);
 }

修改操作

java 复制代码
@RunWith(SpringJUnit4ClassRunner.class)
 @ContextConfiguration("classpath:applicationContext.xml")
 public class JdbcTemplateCRUDTest {
 @Autowired
 private JdbcTemplate jdbcTemplate;
 @Test
 //测试修改操作
public void testUpdate(){
 jdbcTemplate.update("update account set money=? where 
name=?",1000,"tom");
 }
 }

删除和查询全部操作

java 复制代码
@Test
 public void testDelete(){
 jdbcTemplate.update("delete from account where name=?","tom");
 }
 @Test
 public void testQueryAll(){
 List<Account> accounts = jdbcTemplate.query("select * from account", new 
BeanPropertyRowMapper<Account>(Account.class));
 for (Account account : accounts) {
 System.out.println(account.getName());
 }
 }

查询单个数据操作操作

java 复制代码
@Test
 //测试查询单个对象操作
public void testQueryOne(){
 Account account = jdbcTemplate.queryForObject("select * from account where 
name=?", new BeanPropertyRowMapper<Account>(Account.class), "tom");
 System.out.println(account.getName());
 }
 @Test
 //测试查询单个简单数据操作(聚合查询)
 public void testQueryCount(){
 Long aLong = jdbcTemplate.queryForObject("select count(*) from account", 
Long.class);
 System.out.println(aLong);
 }
相关推荐
程序员贺加贝3 分钟前
别把 ThreadLocal 写进 Serializer:一次 SaaS 多租户 Jackson 上下文污染排查
java·spring boot
程序员爱钓鱼9 分钟前
Rust const泛型详解:让常量也成为泛型参数
后端·面试·rust
许彰午11 分钟前
06-EaEngine调度器
java·低代码·架构
练习时长两年半的RL练习生12 分钟前
与AI对话后对 Actor-Critic 中 TD Target 的 a‘ 来源总结
开发语言·人工智能·php
雨田言炎20 分钟前
STM32专题之内部FLASH详解
笔记·stm32·单片机
evans在进步34 分钟前
Spring Boot 工程化核心详解:Parent、Starter、热部署、事务与多数据源
spring boot·后端·python
十五年专注C++开发36 分钟前
100w条数据丝滑滚动!Qt Model/View 架构实战(二)
开发语言·c++·qt
卓怡学长42 分钟前
w181springboot机场乘客服务系统
java·数据库·spring boot·spring·intellij-idea
xiaoxiangsiyan1 小时前
全网IPv6规模化改造实战指南
运维·网络·笔记·云原生·自动化
萧瑟余晖1 小时前
Java深入解析篇三十九之集成测试
java·开发语言·集成测试