91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring框架中JdbcTemplate怎么用

發布時間:2021-09-13 16:33:04 來源:億速云 閱讀:143 作者:小新 欄目:開發技術

小編給大家分享一下Spring框架中JdbcTemplate怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

JdbcTemplate 概述

在之前的Javaweb學習中,學習了手動封裝JdbcTemplate,其好處是通過(sql語句+參數)模板化了編程。而真正的JdbcTemplate類,是Spring框架為我們寫好的。它是 Spring 框架中提供的一個對象,是對原始 Jdbc API 對象的簡單封裝。除了JdbcTemplate,spring 框架還為我們提供了很多的操作模板類。

  • 操作關系型數據的:JdbcTemplate和HibernateTemplate。

  • 操作 nosql 數據庫的:RedisTemplate。

  • 操作消息隊列的:JmsTemplate。

Spring框架的JdbcTemplate在spring-jdbc的jar包中,,除了要導入這個 jar 包
外,還需要導入一個 spring-tx的jar包(它是和事務相關的)。當然連接池的jar包也不能忘記,這里使用的是c3p0

使用JdbcTemplate一定要導入Spring的數據庫模塊的三個jar:

Spring框架中JdbcTemplate怎么用

使用JdbcTemplate可以快捷的操作數據庫,本文章針對JdbcTemplate進行演示。本文所使用的數據庫表為jdbctemplate中的employee,表的內容如下。

Spring框架中JdbcTemplate怎么用

對JdbcTemplate進行分步演示

1:測試數據源

數據庫配置文件

jdbctemplate數據庫在本地數據庫中已經創建。

jdbc.user=root
jdbc.password=Hudie
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/jdbctemplate
jdbc.driverClass=com.mysql.jdbc.Driver

xml配置文件

	<!-- 引入外部配置文件 -->
	<context:property-placeholder location="classpath:dbconfig.properties" />
		
	<!-- 配置數據源 -->
	<bean id="dataSource"
		class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.user}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="driverClass" value="${jdbc.driverClass}"></property>
	</bean>

測試獲取連接

public class txTest {
	ApplicationContext ioc = new ClassPathXmlApplicationContext("ApplicationContext.xml");

	@Test
	public void test() throws SQLException {
		DataSource bean = ioc.getBean(DataSource.class);
		Connection connection = bean.getConnection();
		System.out.println(connection);
		connection.close();
	}
}

執行測試,成功獲取到連接。

Spring框架中JdbcTemplate怎么用

2:為IoC容器配置一個JdbcTemplate

如果通過編碼來進行獲得一個JdbcTemplate對象,可以使用new JdbcTemplate(dataSource);,不過由于這個對象經常使用,將其放在IoC容器中更合適。
具體配置如下:

	<!-- Spring提供了一個JdbcTmplate來操作數據庫 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
	</bean>

測試

public class txTest {
	ApplicationContext ioc = new ClassPathXmlApplicationContext("ApplicationContext.xml");
	JdbcTemplate jdbcTemplate= ioc.getBean(JdbcTemplate.class);

	@Test
	public void test2() {
		System.out.println(jdbcTemplate);
	}
}

成功打印出JdbcTemplate對象。

Spring框架中JdbcTemplate怎么用

3:更新

將emp_id=5的記錄salary字段改為1300.00

jdbcTemplate.updat():表示更新一條記錄。

	@Test
	public void test3() {
		String sql = "update employee set salary = ? where emp_id=?;";
		int update = jdbcTemplate.update(sql, 1300.00, 5);
		System.out.println("更新員工表,影響" + update + "行");
	}

Spring框架中JdbcTemplate怎么用

4:批量插入

jdbcTemplate.batchUpdate(sql, batchArgs):表示批量進行插入,插入一個list集合,返回的是影響的行數。

	@Test
	public void test4() {

		String sql = "insert into employee (emp_name,salary) values(?,?)";
		List<Object[]> batchArgs = new ArrayList<Object[]>();
		batchArgs.add(new Object[] { "張三", 998.98 });
		batchArgs.add(new Object[] { "李四", 998.98 });
		batchArgs.add(new Object[] { "王五", 998.98 });
		batchArgs.add(new Object[] { "趙六", 998.98 });

		// List的長度就是sql語句執行的次數
		int[] is = jdbcTemplate.batchUpdate(sql, batchArgs);
		for (int i : is) {
			System.out.println(i);
		}
	}

int[] is = jdbcTemplate.batchUpdate(sql, batchArgs);返回的結果是影響的行數。

Spring框架中JdbcTemplate怎么用

5:查詢emp_id=5的記錄,封裝為一個Java對象返回。

創建JavaBean

package com.gql.bean;

public class Employee {
	private Integer empId;
	private String empName;
	private Double salary;
	//省略setter、getter與toString方法。
}

查詢并封裝單條記錄

	@Test
	public void test5() {
		String sql = "select emp_id empId,emp_name empName,salary from employee where emp_id=?";
		// rowMapper:規定每一行記錄和JavaBean的屬性如何映射
		Employee employee = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Employee.class), 5);
		System.out.println(employee);
	}

Spring框架中JdbcTemplate怎么用

6:查詢salary>4000的記錄,封裝為List集合返回

	@Test
	public void test6() {
		String sql = "select emp_id empId,emp_name empName,salary from employee where salary>?";
		List<Employee> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Employee.class), 4000);
		for (Employee employee : list) {
			System.out.println(employee);
		}
	}

成功將salary>400的記錄封裝進list集合。

Spring框架中JdbcTemplate怎么用

7:查詢最大的salary

使用mysql的max函數可以獲得最大的salary,調用queryForObject方法,返回Double類型。

	@Test
	public void test7() {
		String sql = "select max(salary) from employee";
		Double object = jdbcTemplate.queryForObject(sql, Double.class);
		System.out.println("最高工資是:" + object);
	}

Spring框架中JdbcTemplate怎么用

8:使用具名參數SQL插入一條員工記錄,并以Map形式傳入參數值。

Spring中使用namedParameterJdbcTemplate來進行含有具名SQL的操作。

將namedParameterJdbcTemplate加到IoC容器中。

	<!-- 配置一個具名參數的Jdbctemplate -->
	<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
		<!-- 使用構造器注入一個數據源 -->
		<constructor-arg name="dataSource" ref="dataSource"></constructor-arg>
	</bean>

在測試中以Map形式傳入參數值。

public class txTest {
	ApplicationContext ioc = new ClassPathXmlApplicationContext("ApplicationContext.xml");
	JdbcTemplate jdbcTemplate = ioc.getBean(JdbcTemplate.class);
	NamedParameterJdbcTemplate namedJdbcTemplate = ioc.getBean(NamedParameterJdbcTemplate.class);

	@Test
	public void test9() {
		String sql = "insert into employee (emp_name,salary) values(:empName,:salary)";
		Map<String, Object> paramMap = new HashMap<>();
		// 將所有具名參數的值都放在map中
		paramMap.put("empName", "小紅");
		paramMap.put("salary", 12000.00);
		int update = namedJdbcTemplate.update(sql, paramMap);
		System.out.println(update);
	}
}

9:使用具名參數SQL插入一條員工記錄,并以SqlparamSource傳入參數值。

與上一條實驗類似,只是選用了不同的參數類型。

	@Test
	public void test10() {
		String sql = "insert into employee (emp_name,salary) values(:empName,:salary)";
		Employee employee = new Employee();
		employee.setEmpName("小藍");
		employee.setSalary(9999.00);
		int i = namedJdbcTemplate.update(sql, new BeanPropertySqlParameterSource(employee));
		System.out.println(i);
	}

以上是“Spring框架中JdbcTemplate怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

如东县| 原阳县| 德格县| 绩溪县| 光山县| 云安县| 永顺县| 神农架林区| 商丘市| 辽宁省| 吴堡县| 新邵县| 开远市| 东阳市| 柯坪县| 乐陵市| 河西区| 永定县| 岳普湖县| 南丹县| 鄂托克前旗| 新化县| 阆中市| 炎陵县| 淅川县| 海安县| 定远县| 始兴县| 天台县| 北宁市| 嘉义县| 丽江市| 临沂市| 定州市| 临夏县| 宾阳县| 柳林县| 清远市| 罗山县| 高淳县| 博乐市|