
- Spring JDBC 教程
- Spring JDBC - 首頁
- Spring JDBC - 概述
- Spring JDBC - 環境設定
- Spring JDBC - 配置資料來源
- Spring JDBC - 第一個應用程式
- 基本的CRUD示例
- Spring JDBC - 建立查詢
- Spring JDBC - 讀取查詢
- Spring JDBC - 更新查詢
- Spring JDBC - 刪除查詢
- 高階JDBC示例
- 呼叫儲存過程
- Spring JDBC - 呼叫儲存函式
- Spring JDBC - 處理BLOB
- Spring JDBC - 處理CLOB
- Spring JDBC 批處理示例
- Spring JDBC - 批處理操作
- 物件批處理操作
- 多個批處理操作
- Spring JDBC 物件
- Spring JDBC - JdbcTemplate
- PreparedStatementSetter
- Spring JDBC - ResultSetExtractor
- Spring JDBC - RowMapper
- NamedParameterJdbcTemplate
- Spring JDBC - SimpleJdbcInsert
- Spring JDBC - SimpleJdbcCall
- Spring JDBC - SqlQuery
- Spring JDBC - SqlUpdate
- Spring JDBC - StoredProcedure
- Spring JDBC 有用資源
- Spring JDBC - 快速指南
- Spring JDBC - 有用資源
- Spring JDBC - 討論
Spring JDBC - NamedParameterJdbcTemplate 類
概述
org.springframework.jdbc.core.NamedParameterJdbcTemplate 類是一個模板類,它具有一組基本的 JDBC 操作,允許使用命名引數而不是傳統的“?”佔位符。此類在執行時將命名引數替換為 JDBC 風格的“?”佔位符後,委託給一個包裝的 JdbcTemplate。它還可以將值列表擴充套件到適當數量的佔位符。
介面宣告
以下是org.springframework.jdbc.core.NamedParameterJdbcTemplate 類的宣告:
public class NamedParameterJdbcTemplate extends Object implements NamedParameterJdbcOperations
語法
MapSqlParameterSource in = new MapSqlParameterSource(); in.addValue("id", id); in.addValue("description", new SqlLobValue(description, new DefaultLobHandler()), Types.CLOB); String SQL = "update Student set description = :description where id = :id"; NamedParameterJdbcTemplate jdbcTemplateObject = new NamedParameterJdbcTemplate(dataSource); jdbcTemplateObject.update(SQL, in);
其中:
in − SqlParameterSource 物件,用於傳遞引數以更新查詢。
SqlLobValue − 表示 SQL BLOB/CLOB 值引數的物件。
jdbcTemplateObject − NamedParameterJdbcTemplate 物件,用於更新資料庫中的學生物件。
示例
為了理解上述與 Spring JDBC 相關的概念,讓我們編寫一個更新查詢的示例。為了編寫我們的示例,讓我們準備好一個可執行的 Eclipse IDE,並按照以下步驟建立一個 Spring 應用程式。
步驟 | 描述 |
---|---|
1 | 更新在章節Spring JDBC - 第一個應用程式下建立的Student專案。 |
2 | 更新bean配置並按如下所述執行應用程式。 |
StudentDAO.java
以下是資料訪問物件介面檔案StudentDAO.java的內容。
package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; public interface StudentDAO { /** * This is the method to be used to initialize * database resources ie. connection. */ public void setDataSource(DataSource ds); /** * This is the method to be used to update * a record into the Student table. */ public void updateDescription(Integer id, String description); }
Student.java
以下是Student.java檔案的內容。
package com.tutorialspoint; // Student POJO for Student Table public class Student { private Integer age; private String name; private Integer id; private String description; // setter/getter methods public void setAge(Integer age) { this.age = age; } public Integer getAge() { return age; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setId(Integer id) { this.id = id; } public Integer getId() { return id; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }
StudentMapper.java
以下是StudentMapper.java檔案的內容。
package com.tutorialspoint; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.jdbc.core.RowMapper; // Row Mapper Object to map Student table entry with Student Object public class StudentMapper implements RowMapper<Student> { public Student mapRow(ResultSet rs, int rowNum) throws SQLException { Student student = new Student(); student.setId(rs.getInt("id")); student.setName(rs.getString("name")); student.setAge(rs.getInt("age")); student.setDescription(rs.getString("description")); return student; } }
StudentJDBCTemplate.java
以下是為已定義的 DAO 介面 StudentDAO 編寫的實現類檔案StudentJDBCTemplate.java。
package com.tutorialspoint; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcCall; import org.springframework.jdbc.core.support.SqlLobValue; import org.springframework.jdbc.support.lob.DefaultLobHandler; import java.io.ByteArrayInputStream; import java.sql.Types; // DAO instance to persist Student values public class StudentJDBCTemplate implements StudentDAO { private DataSource dataSource; private JdbcTemplate jdbcTemplateObject; // set the datasource and jdbctemplate public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; this.jdbcTemplateObject = new NamedParameterJdbcTemplate(dataSource); } // update description public void updateDescription(Integer id, String description) { MapSqlParameterSource in = new MapSqlParameterSource(); in.addValue("id", id); in.addValue("description", new SqlLobValue(description, new DefaultLobHandler()), Types.CLOB); String SQL = "update Student set description = :description where id = :id"; jdbcTemplateObject.update(SQL, in); System.out.println("Updated Record with ID = " + id ); } }
MainApp.java
以下是MainApp.java檔案的內容。
package com.tutorialspoint; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.tutorialspoint.StudentJDBCTemplate; public class MainApp { public static void main(String[] args) { // Create the application context by reading Beans.xml ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); // Create the JDBCTemplate instance from spring context StudentJDBCTemplate studentJDBCTemplate = (StudentJDBCTemplate)context.getBean("studentJDBCTemplate"); // update student description studentJDBCTemplate.updateDescription(1, "This can be a very long text upto 4 GB of size."); } }
Beans.xml
以下是配置檔案Beans.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-3.0.xsd "> <!-- Initialization for data source --> <bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name = "driverClassName" value = "com.mysql.jdbc.Driver"/> <property name = "url" value = "jdbc:mysql://:3306/TEST"/> <property name = "username" value = "root"/> <property name = "password" value = "admin"/> </bean> <!-- Definition for studentJDBCTemplate bean --> <bean id = "studentJDBCTemplate" class = "com.tutorialspoint.StudentJDBCTemplate"> <property name = "dataSource" ref = "dataSource" /> </bean> </beans>
輸出
建立原始檔和bean配置檔案後,讓我們執行應用程式。如果應用程式一切正常,它將列印以下訊息。
Updated Record with ID = 1
您可以透過查詢資料庫來檢查儲存的描述。
廣告