logo

Spring JdbcTemplate Урок

  1. Пролетен JDBC шаблон
  2. Разбиране на необходимостта от Spring JDBC шаблон
  3. Предимство на пролетния JDBC шаблон
  4. JDBC шаблонни класове
  5. Пример за клас 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)