English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مثال على فئة Spring NamedParameterJdbcTemplate

يقدم Spring طريقة أخرى لاستيراد البيانات باستخدام المعلمات المسماة. بهذا، نستخدم الأسماء بدلاً من الأسئلة المفتوحة (؟). لذا، من الأفضل تذكر بيانات الأعمدة.

مثال بسيط على استعلام المعلمات المسماة

insert into employee values (:id,:name,:salary)

Methods فئة NamedParameterJdbcTemplate

في هذا المثال، سنقوم بندعوة Method execute من فئة NamedParameterJdbcTemplate فقط. وفقًا للنحو التالي للطريقة:

pubic T execute(String sql,Map map,PreparedStatementCallback psc)

مثال على فئة NamedParameterJdbcTemplate

نحن نعتقد أنك قد أنشأت الجدول التالي في قاعدة بيانات Oracle10g.

create table employee(
id number(10),
name varchar2(100),
salary number(10)
);

Employee.java

يحتوي هذا الكائن على 3 خصائص تحتوي على بناء،setter وgetter.

package com.w3codebox;
public class Employee {
private int id;
private String name;
private float salary;
// no-arg و constructors مع 参数
// getters and setters
}

EmployeeDao.java

يحتوي على الخاصية jdbcTemplate ومETHOD الحفظ.

package com.w3codebox;
استيراد java.sql.PreparedStatement;
استيراد java.sql.SQLException;
استيراد org.springframework.dao.DataAccessException;
استيراد org.springframework.jdbc.core.PreparedStatementCallback;
استيراد org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.util.*;
public class EmpDao {
NamedParameterJdbcTemplate template;
public EmpDao(NamedParameterJdbcTemplate template) {
        this.template = template;
}
public  void save (Emp e){
String query="insert into employee values (:id,:name,:salary)";
Map<String,Object> map=new HashMap<String,Object>();
map.put("id",e.getId());
map.put("name",e.getName());
map.put("salary",e.getSalary());
template.execute(query,map,new PreparedStatementCallback() {
    @Override
    public Object doInPreparedStatement(PreparedStatement ps)
            throws SQLException, DataAccessException {
        return ps.executeUpdate();
    }
);
}
}

applicationContext.xml

DriverManagerDataSource لإدراج معلومات قاعدة البيانات مثل اسم فئة المحرك، عنوان الاتصال، اسم المستخدم وكلمة المرور.

يوجد في فئة NamedParameterJdbcTemplate من نوع DriverManagerDataSource ميزة تُدعى datasource الخصائص. لذا، نحتاج إلى تقديم استدلال لDataSource في فئة NamedParameterJdbcTemplate.

هنا، نستخدم في فئة EmployeeDao كائن NamedParameterJdbcTemplate، لذا نرسله عبر مبدأ البناء، ولكن يمكنك أيضًا استخدامه عبر طريقة setter.

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="system" />
<property name="password" value="oracle" />
</bean>
<bean id="jtemplate" 
 class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="ds"></constructor-arg>
</bean>
<bean id="edao" class="com.w3codebox.EmpDao">
<constructor-arg>
<ref bean="jtemplate"/>
</constructor-arg>
</bean>
</beans>

SimpleTest.java

هذا النوع يحصل على Bean من ملف applicationContext.xml ويستدعي دالة save.

package com.w3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class SimpleTest {
  public static void main(String[] args) {
    Resource r=new ClassPathResource("applicationContext.xml");
    BeanFactory factory=new XmlBeanFactory(r);
    EmpDao dao=(EmpDao)factory.getBean("edao");
    dao.save(new Emp(23,"sonoo",50000));
  }
}