- Pavasario JDBC šablonas
- Pavasario JDBC šablono poreikio supratimas
- Pavasario JDBC šablono pranašumas
- JDBC šablonų klasės
- JdbcTemplate klasės pavyzdys
Pavasaris JdbcŠablonas yra galingas prisijungimo prie duomenų bazės ir SQL užklausų vykdymo mechanizmas. Jis viduje naudoja JDBC API, tačiau pašalina daug JDBC API problemų.
JDBC API problemos
JDBC API problemos yra šios:
- Turime parašyti daug kodo prieš ir po užklausos vykdymo, pvz., Kuriant ryšį, pareiškimą, uždarant rezultatų rinkinį, ryšį ir pan.
- Turime atlikti duomenų bazės logikos išimčių tvarkymo kodą.
- Turime tvarkyti sandorį.
- Visų šių kodų kartojimas iš vienos duomenų bazės logikos į kitą yra daug laiko reikalaujanti užduotis.
Pavasario JdbcTemplate pranašumas
Spring JdbcTemplate pašalina visas aukščiau minėtas JDBC API problemas. Jame pateikiami metodai, kaip tiesiogiai rašyti užklausas, todėl sutaupoma daug darbo ir laiko.
Pavasario Jdbc artėjimai
„Spring framework“ siūlo šiuos JDBC duomenų bazės prieigos būdus:
- JdbcŠablonas
- NamedParameterJdbcTemplate
- PaprastasJdbcŠablonas
- SimpleJdbcInsert ir SimpleJdbcCall
JdbcTemplate klasė
Tai yra pagrindinė pavasario JDBC palaikymo klasės klasė. Ji rūpinasi išteklių kūrimu ir išleidimu, pvz., ryšio objekto sukūrimu ir uždarymu ir tt Taigi, jei pamiršite uždaryti ryšį, nekils jokių problemų.
Jis tvarko išimtį ir teikia informacinius pranešimus apie išimtis, naudodamas išimties klases, apibrėžtas org.springframework.dao paketą.
JdbcTemplate klasės pagalba galime atlikti visas duomenų bazės operacijas, tokias kaip duomenų įterpimas, atnaujinimas, ištrynimas ir iškvietimas iš duomenų bazės.
Pažiūrėkime pavasario JdbcTemplate klasės metodus.
Nr. | Metodas | apibūdinimas |
---|---|---|
1) | viešas int atnaujinimas (eilutės užklausa) | naudojamas įrašams įterpti, atnaujinti ir ištrinti. |
2) | viešas int atnaujinimas (eilutės užklausa, objektas... argumentai) | naudojamas įrašams įterpti, atnaujinti ir ištrinti naudojant PreparedStatement naudojant nurodytus argumentus. |
3) | viešoji galia vykdyti (eilutės užklausa) | naudojamas DDL užklausai vykdyti. |
4) | viešas T vykdymas (eilutė sql, PreparedStatementCallback veiksmas) | vykdo užklausą naudodamas PreparedStatement atgalinį skambutį. |
5) | vieša T užklausa (String sql, ResultSetExtractor rse) | naudojamas įrašams gauti naudojant ResultSetExtractor. |
6) | viešoji sąrašo užklausa (String sql, RowMapper rse) | naudojamas įrašams gauti naudojant RowMapper. |
Pavasario JdbcTemplate pavyzdys
Darome prielaidą, kad šią lentelę sukūrėte Oracle10g duomenų bazėje.
create table employee( id number(10), name varchar2(100), salary number(10) );Darbuotojas.java
Šioje klasėje yra 3 savybės su konstruktoriais ir nustatytojais bei geteriais.
package com.javatpoint; public class Employee { private int id; private String name; private float salary; //no-arg and parameterized constructors //getters and setters }DarbuotojasDao.java
Jame yra viena ypatybė jdbcTemplate ir trys metodai saveEmployee(), updateEmployee ir 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 naudojamas informacijai apie duomenų bazę, pvz., tvarkyklės klasės pavadinimą, prisijungimo URL, vartotojo vardą ir slaptažodį, laikyti.
Yra pavadintas turtas duomenų šaltinis DriverManagerDataSource tipo JdbcTemplate klasėje. Taigi, duomenų šaltinio ypatybei turime pateikti DriverManagerDataSource objekto nuorodą JdbcTemplate klasėje.
Čia mes naudojame JdbcTemplate objektą EmployeeDao klasėje, todėl perduodame jį setter metodu, bet galite naudoti ir konstruktorių.
Test.java
Ši klasė gauna pupelę iš applicationContext.xml failo ir iškviečia saveEmployee() metodą. Taip pat galite iškviesti metodus updateEmployee() ir deleteEmployee() panaikindami kodo komentarus.
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);*/ } }atsisiųskite šį pavyzdį (sukurtą naudojant „MyEclipse IDE“)
atsisiųskite šį pavyzdį (sukurtą naudojant „Eclipse IDE“)