Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen
Hva er ibatis Rammeverk laget for: Forenkling av database oppkoblinger Separering av SQL kode fra kildekode Data access objects (DAO) Objektpresentasjon av data
Komme igang med ibatis Du kan laste ned ibatis bibiliotekfilen fra http://ibatis.apache.org JAR-filen legges i CLASSPATH Inkludere dette i kildekoden: import com.ibatis.sqlmap.client.sqlmapclient; import com.ibatis.sqlmap.client.sqlmapclientbuilder; import com.ibatis.common.resources.resources;
Komme igang med ibatis Filer du trenger:.properties-fil SQLMap konfigurasjonsfil (.xml) SQLMap ressursfil (.xml) per objekt Dataobjekt (feks javaklasse)
Eksempel.properties fil (mysql) Denne filen inneholder oppkoblingsdetaljer mot databasen. driver=com.mysql.jdbc.driver url=jdbc:mysql://localhost:3306/mindatabase username=minbruker password=mittpassord
Eksempel SQLMap konfigurasjon <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlmapconfig PUBLIC "-//ibatis.apache.org//dtd SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlmapconfig> <pro pe rtie s re s o urc e ="c onfig /da ta ba s e.pro pe rtie s "/> <transactionmanager type="jdbc" commitrequired="false"> <datasource type="simple"> <property name="jdbc.driver" value="${driver}"/> <property name="jdbc.connectionurl" value="${url}"/> <property name="jdbc.username" value="${username}"/> <property name="jdbc.password" value="${password}"/> </datasource> </transactionmanager> <s qlma p re s o urc e ="da ta /Ans a tt.xm l"/> </sqlmapconfig>
Eksempel tabell i database ansatt.sql ------------------------------------------------------ CREATE TABLE ANSATT( ANSATT_ID NUMBER (5, 0) NOT NULL, ANSATT_FIRST_NAME VARCHAR (40) NOT NULL, ANSATT_LAST_NAME VARCHAR (40) NOT NULL, ANSATT_BIRTH_DATE DATETIME, ANSATT_SALARY NUMBER (7, 2) NOT NULL, PRIMARY KEY (ANSATT_ID) )
Eksempel dataobjekt Ansatt.java ------------------------------------------------------ Public class Ansatt { private int id; private String firstname; private String lastname; private Date birthdate; private double salary; public int getid() { return id; } public void setid(int id) { this.id = id; } } //.. getters and setters
Eksempel på ressursfil Ansatt.xml ------------------------------------------------------------------ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE sqlmap PUBLIC "-//ibatis.apache.org//dtd SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlmap namespace="ansatt"> <select id="getansatt" parameterclass= int resultclass="ansatt"> SELECT ANSATT_ID as id, ANSATT_FIRST_NAME as firstname, ANSATT_LAST_NAME as lastname, ANSATT_BIRTH_DATE as birthdate, ANSATT_SALARY as salary, FROM ANSATT WHERE ANSATT_ID = #value# </select>
Eksempel på ressursfil forts. <insert id="insertansatt" parameterclass="ansatt"> INSERT INTO PERSON (ANSATT_ID, ANSATT_FIRST_NAME, ANSATT_LAST_NAME, ANSATT_BIRTH_DATE, ANSATT_SALARY) VALUES (#id#, #firstname#, #lastname#, #birthdate#, #salary#) </insert> <delete id="deleteansatt" parameterclass="ansatt"> DELETE FROM ANSATT WHERE ANSATT_ID = #id# </delete>
Eksempel på ressursfil forts. <update id="updateansatt" parameterclass="ansatt"> UPDATE ANSATT SET ANSATT_FIRST_NAME = #firstname#, ANSATT_LAST_NAME = #lastname#, ANSATT_BIRTH_DATE = #birthdate#, ANSATT_SALARY = #salary# WHERE ANSATT_ID = #id# </update> </sqlmap>
Hvordan bruke ibatis Initialisere SQLMap klassen public class MyProg { priva te s ta tic fina l S qlma pc lie nt s qlma p; private init() { try { S tring re s o urc e = c o nfig /s qlma p-c o nfig.xm l ; Re a de r re a de r = R e s o urc e s.g e tr e s o urc e As R e a de r (re s o urc e ); s qlma p = S qlma pc lie ntb uilde r.builds qlma pc lie nt(re a de r); } catch (Exception e) { //.. Feilmelding her. Drep applikasjonen } } //... }
Hvordan bruke ibatis Hente et objekt fra databasen // henter objekt med ANSATT_ID = 5 Integer ansattpk = new Integer(5); Ans a tt a ns a tt = (Ans a tt)s qlma p.que ryf o robje c t("g e tans a tt", a ns a ttp k); Hente flere objekter fra databasen L is t a ns a tte = s qlma p.que ryf orl is t("g e talle Ans a tte "); Oppdatere et objekt i databasen ansatt.setsalary(50000.0) // you wish :D s qlma p.upda te ("upda te Ans a tt", a ns a tt);
Hvordan bruke ibatis Hvordan legge inn ett objekt Ansatt nyansatt = new Ansatt(); nyansatt.setid(123); nyansatt.setfirstname("frode"); nyansatt.setlastname("eika Sandnes"); nyansatt.setbirthdate(null); nyansatt.setsalary(10000.0);.. s qlma p.ins e rt("ins e rtans a tt", nyans a tt);.. Hvordan slettet ett objekt s qlma p.de le te ("de le te Ans a tt",nyans a tt);
Konklusjon Våre synspunkter: + Lett å bruke + Lett å lære seg + Ryddigere kode, ved å skille sql og kildekode + Cachede SQL oppslag (ytelse) - Flere filer å forholde seg til - Lenger responstid fra databasen
Spørsmål?