Ciao a tutti,
stò studiando l'uso di JDBC per realizzare un DAO
Allora nel mio caso ho una tabella Student in un DB MySql avente la seguente struttura:
Poi ho un'interfaccia chiamata StudentDAO che rappresenta tutte le possibili operazioni di CRUD eseguibili su tale tabellacodice:mysql> describe Student; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | NAME | varchar(20) | NO | | NULL | | | AGE | int(11) | NO | | NULL | | +-------+-------------+------+-----+---------+----------------+
Poi ho una classe chiamata StudentJDBCTemplate che implementa concretamente tale interfaccia andando ad implementare i metodi che devono eseguire le operazioni di CRUD
E quì ho qualche dubbio....ad esempio ho il seguente metodo per inserire una nuova riga all'interno della tabella Student:
Tale metodo prende in input 2 parametri che rappresentano i valori dei campi NAME ed AGE della tabella Student, il valore ID non è necessario in quanto è la primary key ed è settato sul DB come autoincrementcodice:/* Inserisce un nuovo record, rappresentante uno studente, dentro la tabella @param nome studente @param età studente * @see org.andrea.myexample.myJdbcSpringExample.StudentDAO#create(java.lang.String, java.lang.Integer) */ public void create(String name, Integer age) { String SQL = "insert into Student (name, age) values (?, ?)"; jdbcTemplateObject.update(SQL, name, age); System.out.println("Created Record Name = " + name + " Age = " + age); return; }
Ok, ho la stringa SQL che credo rappresenti la mia query SQL per inserire la nuova riga nel DB:
String SQL = "insert into Student (name, age) values (?, ?)";
La cosa che mi è poco chiara è cosa rappresenti esattamente questa parte di codice: values (?, ?)
Leggendo online mi pare di capire che serva per non dover eseguire manualmente l'escaping dei valori di name ed age, ma cosa significa esattamente eseguire l'escaping di tali valori?
L'altro dubbio è relativo all'inserimento di tale riga nella tabella...per inserirla uso il metodo update() su di un oggetto avente tipo JdbcTemplate (l'oggetto jdbcTemplateObject)
Così:
jdbcTemplateObject.update(SQL, name, age);
A tale oggetto quindi passo la precedente query SQL ed i valori dei parametri di input name ed age
In pratica è tale metodo a sostituire i valori dei 2 parametri di input name ed age all'interno delle sottostringe "name" ed "age" della stringa "insert into Student (name, age) values (?, ?)" rappresentante la nostra query?
Grazie mille
Andrea



