SSM之Spring中的JdbcTemplate/JdbcTemplate在IDEA中怎么用?/JdbcTemplate是啥

40 篇文章 0 订阅
15 篇文章 0 订阅
这篇博客介绍了Spring中JDBCTemplate的使用,包括其作为JDBC API封装的作用、开发步骤和代码示例。作者通过创建数据库表、实体类,然后使用JdbcTemplate进行数据的增删查改操作,展示了如何在XML中配置数据源以及使用Spring集成Junit进行测试。博客还涉及了数据源的XML注入和CRUD操作的实现。
摘要由CSDN通过智能技术生成

写在前面:
接着记录自己的Spring学习之旅,若看不懂则建议先看前几篇博文,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

1.10 JDBC Template

1.10.1 概述

JDBC Template是spring框架中提供的一个对象,是对原始复杂jdbc api的封装。一般提供对应多种数据库的操作模板类,主要有以下几种:

数据库类型模板类
关系型数据库Jdbc Template 和Hibernate Template
noSql数据库Redis Template
消息队列Jms Template

1.10.2 开发步骤

  • 导入Spring-jdbc和Spring-tx坐标;
  • 创建数据库和实体
  • 创建Jdbc Template对象
  • 执行数据库操作

1.10.3 代码操作

1.10.3.1 项目准备

根据[#### 1.2.2.1 用Maven构建Spring项目]建立项目并补全所缺目录。

1.10.3.2 导入坐标

在pom文件中导入需要用到的坐标并更新,代码如下:

<dependencies>  
		<dependency>  
			 <groupId>org.springframework</groupId>  
			 <artifactId>spring-context</artifactId>  
			 <version>5.2.3.RELEASE</version>  
	</dependency>
	 <dependency>
		 <groupId>mysql</groupId>  
		 <artifactId>mysql-connector-java</artifactId>  
		 <version>8.0.12</version>  
	 </dependency> 
		<dependency> 
			<groupId>org.springframework</groupId>  
		 <artifactId>spring-tx</artifactId>  
		 <version>5.2.3.RELEASE</version>  
	 </dependency> 
		<dependency> 
			<groupId>org.springframework</groupId>  
		 <artifactId>spring-jdbc</artifactId>  
		 <version>5.2.3.RELEASE</version>  
	 </dependency> 
		<dependency>
			<groupId>c3p0</groupId>  
		 <artifactId>c3p0</artifactId>  
		 <version>0.9.1.2</version>  
	 </dependency> 
	<dependency>  
		 <groupId>org.springframework</groupId>  
		 <artifactId>spring-test</artifactId>  
		 <version>5.2.3.RELEASE</version>  
	</dependency>
		<dependency> 
			<groupId>junit</groupId>  
		 <artifactId>junit</artifactId>  
		 <version>4.13</version>  
		 <scope>test</scope>  
	 </dependency>
</dependencies>
1.10.3.3 创建数据库表

打开Navicat 12,连接数据库,建立名为account的表,表结构如图![[Pasted image 20211122220902.png]]

1.10.3.4 建立实体对应类

在main中java目录下建立名为Account的实体类,如图![[Pasted image 20211122214339.png]]
代码如下:

public class Account {  
    private String name;  
 	private double money;  
  
	 public String getName() {  
			return name;  
	 }  

		public double getMoney() {  
			return money;  
	 }  

		public void setName(String name) {  
			this.name = name;  
	 }  

		public void setMoney(double money) {  
			this.money = money;  
	 }  
	 @Override  
		public String toString() {  
		return "Account{" +  
				"name='" + name + '\'' +  
				", money=" + money +  
				'}';  
	}
}
1.10.3.5 简单测试

在test目录下新建测试类,添加测试代码,如下:

public class JdbcTemplateTest {  
    @Test  
	// 测试JdbcTemplate  
	 public void JdbcTest() throws Exception  
		{  
	// 创建数据源对象  
	 ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();  
	 comboPooledDataSource.setDriverClass("com.mysql.cj.jdbc.Driver");  
	 comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk&useSSL=false&serverTimezone=GMT%2B8");  
	 comboPooledDataSource.setUser("root");  
	 comboPooledDataSource.setPassword("root");  
	 JdbcTemplate jdbcTemplate = new JdbcTemplate();  
	// 设置数据源对象  
	 jdbcTemplate.setDataSource(comboPooledDataSource);  
	// 执行插入操作  
	 int row = jdbcTemplate.update("insert into account values(?,?)", "张三", "5000");  
	 System.out.println(row);  
	 }  
}

运行即可,可发现数据库已插入一条数据!

1.10.3.6 代码优化
1.10.3.6.1 XML注入
  • 创建applicationContext.xml文件。进行bean配置,代码如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
	 <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>  
	 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp; characterEncoding=gbk&amp;useSSL=false&amp;serverTimezone=GMT%2B8"/>  
	 <property name="user" value="root"/>  
	 <property name="password" value="root"/>  
</bean>  
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
	 <property name="dataSource" ref="dataSource"/>  
</bean>
  • 测试。新建测试函数,使用ApplicationContext进行获取对象测试,代码如下:
// 测试使用Spring容器产生数据源---xml方式  
 @Test  
 public void JdbcTest2() throws Exception  
    {  
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");  
		 JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");  
		 int row = jdbcTemplate.update("insert into account values(?,?)", "李四", "6000");  
		 System.out.println(row);  
 }
  • 结果依旧是插入成功!
1.10.3.6.2 Spring 集成Junit+抽取jdbc进行查询删除更新操作
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration("classpath:applicationContext.xml")  
public class CRUDJdbcTemplateTest {  
   @Autowired  
    private JdbcTemplate jdbcTemplate;  
    @Test  
    //查询有多少条记录
    public void testNumber()  
   	{  
   		Long count = jdbcTemplate.queryForObject("select count(*) from account", long.class);  
    		System.out.println("数据库有"+ count + "条记录!");  
    }  

   	@Test  
   	//查询所有记录
    public void testSelect() {  
   		List<Account> accountList = jdbcTemplate.query("select * from account", new BeanPropertyRowMapper<Account>(Account.class));  
   		 System.out.println("查询所有信息:");  
   		 System.out.println(accountList);  
    }  
   	@Test  
   	//修改和删除
    public void testCURD()  
   	{  
   		jdbcTemplate.update("update account set money = ? where name = ?","8000","张三");  
   		 jdbcTemplate.update("delete from account  where name = ?","李四");  
    }  
   	@Test  
   	//查询单条记录
    public void testSelectOne() {  
   		Account account = jdbcTemplate.queryForObject("select * from account where name =?", new BeanPropertyRowMapper<Account>(Account.class), "张三");  
   	 System.out.println("查询张三的信息:");  
   	 System.out.println(account);  
    }  
}
  • 数据库数据操作之前如图![[Pasted image 20211123205659.png]]
  • 查询结果如图![[Pasted image 20211123205941.png]]
    数据库表变为如图
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值