English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يدعم Spring 3 JDBC ميزة var-args (المعلمات المتغيرة) وتعبئة تلقائية في SimpleJdbcTemplate.
يحوي SimpleJdbcTemplate على JdbcTemplate ويقدم طريقة update يمكن فيها تمرير أي عدد من المعلمات.
int update(String sql,Object... parameters)
يجب أن نمرر قيم المعلمات وفقًا للترتيب المحدد في الاستعلام المعياري في طريقة التحديث.
نفترض أنك قد أنشأت الجدول التالي في قاعدة بيانات 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 and parameterized constructors //getters and setters }
EmployeeDao.java
انه يحتوي على خاصية SimpleJdbcTemplate ومثلاً update. في هذه الحالة، سيتحقق مثلاً update فقط من اسم الم对应的 لـ ID. إذا كنت ترغب في تحديث الاسم والراتب في نفس الوقت، قم بتعليق السطرين أعلاه في طريقة update وازالة التعليق من السطرين التاليين.
package com.w3codebox; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; public class EmpDao { SimpleJdbcTemplate template; public EmpDao(SimpleJdbcTemplate template) { this.template = template; } public int update (Emp e){ String query="update employee set name=? where id=?"; return template.update(query, e.getName(), e.getId()); //String query="update employee set name=?,salary=? where id=?"; //return template.update(query, e.getName(), e.getSalary(), e.getId()); } }
applicationContext.xml
DriverManagerDataSource لإدراج معلومات قاعدة البيانات مثل اسم فئة المحرك، عنوان الاتصال، اسم المستخدم وكلمة المرور.
يوجد في فئة SimpleJdbcTemplate من نوع DriverManagerDataSource اسم
datasource
لذلك، نحتاج إلى تقديم استدلال DriverManagerDataSource كمرجع لخصائص المصدر البيانات في فئة SimpleJdbcTemplate.
في هذا المكان، نستخدم في فئة EmployeeDao كائن SimpleJdbcTemplate، لذا يتم تمريره من خلال بناء الجسم، ولكن يمكنك أيضًا استخدام طريقة 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.simple.SimpleJdbcTemplate"> <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 ويستدعي طريقة تحديث الكائن EmpDao.
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"); int status=dao.update(new Emp(23,"Tarun",35000)); System.out.println(status); } }