- Spring JDBC-mal
- Forstå behovet for Spring JDBC-mal
- Fordel med Spring JDBC-mal
- JDBC-malklasser
- Eksempel på JdbcTemplate-klassen
Vår JdbcTemplate er en kraftig mekanisme for å koble til databasen og utføre SQL-spørringer. Den bruker JDBC api internt, men eliminerer mange problemer med JDBC API.
nummer til streng java
Problemer med JDBC API
Problemene med JDBC API er som følger:
- Vi må skrive mye kode før og etter utføring av spørringen, for eksempel opprette tilkobling, setning, lukking av resultater, tilkobling etc.
- Vi må utføre unntakshåndteringskode på databaselogikken.
- Vi må håndtere transaksjoner.
- Repetisjon av alle disse kodene fra én til en annen databaselogikk er en tidkrevende oppgave.
Fordel med Spring JdbcTemplate
Spring JdbcTemplate eliminerer alle de ovennevnte problemene med JDBC API. Det gir deg metoder for å skrive spørringene direkte, så det sparer mye arbeid og tid.
Spring Jdbc-tilnærminger
Spring-rammeverket gir følgende tilnærminger for JDBC-databasetilgang:
- JdbcTemplate
- NavngittParameterJdbcTemplate
- Enkel JdbcTemplate
- SimpleJdbcInsert og SimpleJdbcCall
JdbcTemplate-klassen
Det er den sentrale klassen i Spring JDBC-støtteklassene. Den tar seg av opprettelse og frigjøring av ressurser som opprettelse og lukking av tilkoblingsobjekt etc. Så det vil ikke føre til noe problem hvis du glemmer å lukke tilkoblingen.
Den håndterer unntaket og gir informative unntaksmeldinger ved hjelp av unntaksklasser definert i org.springframework.dao pakke.
Vi kan utføre alle databaseoperasjoner ved hjelp av JdbcTemplate-klassen som innsetting, oppdatering, sletting og henting av data fra databasen.
La oss se metodene til vårens JdbcTemplate-klassen.
sanjay dutt og
Nei. | Metode | Beskrivelse |
---|---|---|
1) | offentlig int-oppdatering (strengspørring) | brukes til å sette inn, oppdatere og slette poster. |
2) | public int update(String query,Object... args) | brukes til å sette inn, oppdatere og slette poster ved å bruke PreparedStatement ved å bruke gitte argumenter. |
3) | public void execute (strengspørring) | brukes til å utføre DDL-spørring. |
4) | public T execute(String sql, PreparedStatementCallback action) | utfører spørringen ved å bruke PreparedStatement tilbakeringing. |
5) | offentlig T-spørring (String sql, ResultSetExtractor rse) | brukes til å hente poster ved hjelp av ResultSetExtractor. |
6) | offentlig listespørring (String sql, RowMapper rse) | brukes til å hente poster ved hjelp av RowMapper. |
Eksempel på Spring JdbcTemplate
Vi antar at du har laget følgende tabell i Oracle10g-databasen.
create table employee( id number(10), name varchar2(100), salary number(10) );Employee.java
Denne klassen inneholder 3 egenskaper med konstruktører og setter og gettere.
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
Den inneholder en egenskap jdbcTemplate og tre metoder saveEmployee(), updateEmployee og 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
De DriverManagerDataSource brukes til å inneholde informasjon om databasen som driverklassenavn, tilkoblings-URL, brukernavn og passord.
Det er en eiendom som heter datakilde i JdbcTemplate-klassen av typen DriverManagerDataSource. Så vi må oppgi referansen til DriverManagerDataSource-objektet i JdbcTemplate-klassen for datakildeegenskapen.
Her bruker vi JdbcTemplate-objektet i EmployeeDao-klassen, så vi sender det med setter-metoden, men du kan også bruke konstruktør.
Test.java
Denne klassen henter bønnen fra applicationContext.xml-filen og kaller opp saveEmployee()-metoden. Du kan også kalle updateEmployee()- og deleteEmployee()-metoden ved å oppheve kommentering av koden også.
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);*/ } }last ned dette eksemplet (utviklet med MyEclipse IDE)
last ned dette eksemplet (utviklet med Eclipse IDE)