- Пролетен JDBC шаблон
- Разбиране на необходимостта от Spring JDBC шаблон
- Предимство на пролетния JDBC шаблон
- JDBC шаблонни класове
- Пример за клас JdbcTemplate
Пролет JdbcTemplate е мощен механизъм за свързване към базата данни и изпълнение на SQL заявки. Вътрешно използва JDBC API, но елиминира много проблеми на JDBC API.
Проблеми на JDBC API
Проблемите на JDBC API са следните:
средно срещу средно
- Трябва да напишем много код преди и след изпълнение на заявката, като създаване на връзка, израз, затваряне на набор от резултати, връзка и т.н.
- Трябва да изпълним код за обработка на изключения в логиката на базата данни.
- Трябва да се справим с транзакцията.
- Повтарянето на всички тези кодове от една в друга логика на база данни е трудоемка задача.
Предимство на Spring JdbcTemplate
Spring JdbcTemplate елиминира всички горепосочени проблеми на JDBC API. Той ви предоставя методи за директно писане на заявките, така че спестява много работа и време.
Пролетта Jdbc наближава
Spring framework предоставя следните подходи за достъп до JDBC база данни:
- JdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert и SimpleJdbcCall
Клас JdbcTemplate
Това е централният клас в класовете за поддръжка на Spring JDBC. Той се грижи за създаването и освобождаването на ресурси като създаване и затваряне на обект за връзка и т.н. Така че няма да доведе до проблем, ако забравите да затворите връзката.
Той обработва изключението и предоставя информативните съобщения за изключение с помощта на класове за изключения, дефинирани в org.springframework.dao пакет.
Можем да изпълняваме всички операции с базата данни с помощта на клас JdbcTemplate, като вмъкване, актуализиране, изтриване и извличане на данните от базата данни.
Нека видим методите на пролетния клас JdbcTemplate.
Не. | Метод | Описание |
---|---|---|
1) | публична int актуализация (заявка за низ) | се използва за вмъкване, актуализиране и изтриване на записи. |
2) | public int update(String query,Object... args) | се използва за вмъкване, актуализиране и изтриване на записи с помощта на PreparedStatement с помощта на дадени аргументи. |
3) | публично невалидно изпълнение (заявка за низ) | се използва за изпълнение на DDL заявка. |
4) | public T execute(String sql, PreparedStatementCallback action) | изпълнява заявката чрез обратно извикване на PreparedStatement. |
5) | публична T заявка (низ sql, ResultSetExtractor rse) | се използва за извличане на записи с помощта на ResultSetExtractor. |
6) | публична заявка за списък (String sql, RowMapper rse) | се използва за извличане на записи с помощта на RowMapper. |
Пример за Spring JdbcTemplate
Предполагаме, че сте създали следната таблица в базата данни Oracle10g.
структура на данни
create table employee( id number(10), name varchar2(100), salary number(10) );Служител.java
Този клас съдържа 3 свойства с конструктори и сетер и гетери.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }EmployeeDao.java
Той съдържа едно свойство jdbcTemplate и три метода saveEmployee(), updateEmployee и deleteEmployee().
package com.javatpoint; import org.springframework.jdbc.core.JdbcTemplate; public class EmployeeDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public int saveEmployee(Employee e){ String query='insert into employee values( ''+e.getId()+'',''+e.getName()+'',''+e.getSalary()+'')'; return jdbcTemplate.update(query); } public int updateEmployee(Employee e){ String query='update employee set name=''+e.getName()+'',salary=''+e.getSalary()+'' where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } public int deleteEmployee(Employee e){ String query='delete from employee where id=''+e.getId()+'' '; return jdbcTemplate.update(query); } }applicationContext.xml
The DriverManagerDataSource се използва, за да съдържа информация за базата данни, като име на клас драйвер, URL адрес за връзка, потребителско име и парола.
Има имот на име източник на данни в класа JdbcTemplate от тип DriverManagerDataSource. Така че трябва да предоставим препратката към обекта DriverManagerDataSource в класа JdbcTemplate за свойството източник на данни.
Тук използваме обекта JdbcTemplate в класа EmployeeDao, така че го предаваме чрез метода за настройка, но можете да използвате и конструктор.
Test.java
Този клас получава компонента от файла applicationContext.xml и извиква метода saveEmployee(). Можете също така да извикате метода updateEmployee() и deleteEmployee(), като също разкоментирате кода.
package com.javatpoint; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext('applicationContext.xml'); EmployeeDao dao=(EmployeeDao)ctx.getBean('edao'); int status=dao.saveEmployee(new Employee(102,'Amit',35000)); System.out.println(status); /*int status=dao.updateEmployee(new Employee(102,'Sonoo',15000)); System.out.println(status); */ /*Employee e=new Employee(); e.setId(102); int status=dao.deleteEmployee(e); System.out.println(status);*/ } }изтеглете този пример (разработен с помощта на MyEclipse IDE)
изтеглете този пример (разработен с помощта на Eclipse IDE)