iBatis Úvod

iBATIS je rámec persistence, který automatizuje mapování mezi objekty SQL databáze (např. tabulky) a objekty v Javě (např. uživatelem definovaná třída nebo objekt kolekce). Toto mapování je vytvořen a udržován pomocí konfiguračních souborů xml. Tyto konfigurační soubory obsahují různé příkazy SQL a další možnosti související s rámcem. Jednoduchost je největší výhodou datového mapovače iBATIS oproti nástrojům pro relační mapování objektů. Pro použití iBATIS Data Mapper spoléháte na své vlastní objekty, XML a SQL. S iBATIS Data Mapper máte plný výkon SQL i uložených procedur na dosah ruky.

iBATIS je jednoduchý, ale kompletní rámec, který usnadňuje pro vás mapovat své objekty do SQL příkazů nebo uložených procedur. Cílem rámce iBATIS je získat 80% funkčnosti přístupu k datům pomocí pouze 20% kódu.

co je iBATIS?

a JDBC Framework

  • vývojáři píší SQL, iBATIS jej provádí pomocí JDBC.
  • žádné další try / catch / konečně / try / catch.

SQL Mapper

  • automaticky mapuje vlastnosti objektu na připravené parametry příkazu.
  • automaticky mapuje sady výsledků na objekty.
  • podpora pro zbavení se n + 1 dotazů.

proč se iBATIS Data Mapper používá?

vývojáři často vytvářejí mapy mezi objekty v rámci aplikace. Jedna definice mapovače je “ objekt, který nastavuje komunikaci mezi dvěma nezávislými objekty.“

datový mapovač je „vrstva mapovačů, která přesouvá data mezi objekty a databází, přičemž je udržuje nezávislá na sobě a na samotném mapovači“.

poskytujete databázi a objekty; iBATIS poskytuje mapovací vrstvu, která jde mezi nimi.

výhody iBATIS

  • podporuje uložené procedury-iBATIS zapouzdřuje SQL ve formě uložených procedur, takže obchodní logika je udržována mimo databázi a aplikace je snadněji nasazena a testována a je přenosnější.
  • podporuje inline SQL-není potřeba žádný předkompilátor a máte plný přístup ke všem funkcím SQL.
  • Podporuje dynamické SQL-iBATIS poskytuje funkce pro dynamicky budování SQL dotazů na základě parametrů.
  • Podporuje O / RM-iBATIS podporuje mnoho stejných funkcí jako nástroj O/RM, jako je líné načítání, načítání spojení, ukládání do mezipaměti, generování runtime kódu a dědičnost.

iBatis Tutorial

v tomto příspěvku se naučíme, jak používat rámec iBatis v projektu automatizace. Hlavní výhodou tohoto rámce je, že můžeme provádět složité příkazy SQL snadno bez psaní hodně kódu. Provedení je velmi spolehlivé a je bezchybné, pokud neděláme zbytečné logické chyby.

stažení projektu

Krok 1 Vytvořte Projekt Maven nebo Projekt Java pomocí Eclipse.

pro vytvoření projektu Maven klikněte zde.

pro vytvoření projektu Java klikněte zde.

Krok 2. Přidat externí závislosti do projektu Maven

abychom mohli používat iBatis, musíme použít ‚ibatis-sqlmap.jar ‚ nebo pod maven závislost

XHTML

1
2
3
4
5

<závislost>
<groupid> org.Apač.ibatis< / groupid>
<artifactid>ibatis-sqlmap< / artifactid>
<verze> 2.3.4.726< / verze>
</závislost>

pro interakci s databází musíme přidat ‚ mysql-connector-java.jar ‚nebo pod maven závislost

XHTML

1
2
3
4
5

<závislost>
<groupid>mysql< / groupid>
<artifactid>mysql-connector-java< / artifactid>
<verze> 5.1.9< / verze>
</závislost>

ke čtení konfiguračních souborů potřebujeme‘ Commons-configuration.soubor jar nebo pod závislostí maven

XHTML

1
2
3
4
5

<závislost>
<groupId>commons-konfigurace< / groupId>
<artifactId>commons-configuration< / artifactId>
<verze> 1.10< / verze>
</závislost>

pro přidání závislostí viz níže uvedený snímek obrazovky:
iBatisScreen0

Krok 3. Nastavení lokální databáze

potřebujeme lokální / vzdálený databázový server v případě, že ho nemáme, můžeme nainstalovat mysql, jak je uvedeno v níže uvedených krocích, a vytvořit databázi s tabulkou pro dotaz

  1. nainstalujte mysql server pomocí níže uvedené adresy url http://dev.mysql.com/downloads/installer/
  2. nastavte proměnné prostředí pro nainstalovaný mysql tak, aby mohl být spuštěn z libovolného adresáře
    PATH=C:\Program Files \ MySQL \ MySQL Server 5.5 \ bin;
  3. otevřete cmd a zadejte mysql a spustí mysql výzvu k provedení dotazů sql
  4. změníme výchozí heslo pro uživatele root mysql pomocí níže uvedeného dotazu: Nastavte heslo pro „root“ @ „localhost“ = heslo („heslo“);
  5. vytvoříme novou databázi, vytvoříme tabulku a vložíme data do tabulky pro naše testování

iBatisScreen1

vytvořit tabulku employee ( emp_id int(11) DEFAULT NULL, emp_name varchar(100) DEFAULT NULL, emp_salary int(11) DEFAULT NULL )
vložit do employee (emp_id,emp_name,emp_salary) hodnoty (1, ‚olx‘, 100);
vložit do employee (emp_id,emp_name,emp_salary) hodnoty(2,’uber‘,300);
vložit do employee (emp_id,emp_name,emp_salary) hodnoty (3, ‚safari‘,300);

Krok 4: Nastavte Projekt

vzhledem k tomu, že projekt Maven je již vytvořen, jak je uvedeno v kroku 1, se strukturou

  • src / main / java-jakákoli základní třída, kterou musíme přidat
  • src / test / java-jakákoli třída testovacích případů, kterou musíme přidat

, takže přidáme ještě jednu adresářovou strukturu pro zpracování souboru zdrojů.

  • src / main / resources / META-INF/

1) přidáme konfigurační soubor XML s názvem ‚ SqlMapConfig.xml ‚ na výše uvedené cestě s následujícím obsahem. Toto je soubor, kde musíme poskytnout všechny konfigurace potřebné pro iBatis jako

  • JDBC mysql connector class: com . Excel.jdbc.Driver
  • mysql databáze ip/hostname a portnumber s názvem výchozí databáze pro připojení s: jdbc: mysql: / / 127.0.0.1: 3306 / jmeter.
    Poznámka : Použili jsme localhost ip zde, jak jsme dotazování lokálně nainstalované databáze mysql a ve výchozím nastavení běží na portu číslo 3306
  • mysql databázový server uživatelské jméno a heslo
  • cesta zdroje xml souboru, kde někdo může psát nezávislé dotazy pro provedení

oficiální dokumentace souboru ‚ SQLMapConfig.xml ‚lze nalézt na níže url

https://ibatis.apache.org/docs/java/dev/com/ibatis/sqlmap/client/sql-map-config.txt

iBatisScreen2
2) přidáme soubor vlastností“ ibatis.vlastnosti “ na výše uvedené cestě, která bude obsahovat data v párech klíčových hodnot. Tento soubor dodá data (jak je uvedeno v bodech 4.1) SqlMapConfig.xml
 iBatisScreen3

3) přidáme ‚resource XML'(Common.datum). Toto je soubor, do kterého můžeme psát SQL dotazy ke spuštění. Pro účely testování jsem přidal 4 různé příkazy, které jsme narazili při provádění ověření backend např.‘ select‘,‘ insert‘,‘ update ‚a‘ delete ‚ příkazy

oficiální dokumentace tohoto souboru lze nalézt na níže URL

https://ibatis.apache.org/docs/java/dev/com/ibatis/sqlmap/client/sql-map.txt

iBatisScreen4

pojďme rychle vidět kompletní strukturu projektu.

 iBatisScreen5
pojďme rychle vidět kód, který vytvoříme třídu testovacích případů ve složce src/test / java

  1. Vytvořte statickou proměnnou pro uložení souboru SQL Map config a Properties
  2. Vytvořte statický objekt třídy SqlMapClient
  3. před zahájením testu jsme konfiguraci ibatis přípravou sqlMapClient
    • Přečtěte si db params z ibatis.soubor vlastností
    • Vytvořte seznam vlastností pro předání dynamických parametrů db čtených z ibatis.soubor vlastností
    • vytvoření instance čtečky pro čtení sqlMapConfig.xml soubor
    • Building sqlMapClient pro provádění dotazů předáním dat připravených v kroku 3.2 A 3.3

stažení projektu: Stáhněte si výše uvedený projekt.

Krok 5: Nastavení & provádění testu

1) Vyberte test příkazu: vytvořte první test pro provedení výběru dotazu voláním metody „queryForList“.

tato metoda akceptuje 2 argumenty, tj.

  • Název namapovaného SQL příkazu společného.xml tj. běžné.getEmpDetails<název souboru.vyberte hodnotu ID příkazu v Common.xml>
  • mapový objekt obsahující dynamické argumenty, které mají být předány v klauzuli WHERE select query. Pokud nechceme předat žádný argument, můžeme předat null
  • Store select SQL výstup v seznamu<mapa<řetězec, objekt>>
  • projděte mapu pomocí smyčky a získejte data přítomná pro klíč

výsledky provádění příkazu „Select“
 iBatisScreen6-SelectCode

iBatisScreen6-SelectDB

2) vložit test příkazu: vytvořte druhý test pro provedení dotazu vložit voláním metody „vložit“.

tato metoda akceptuje 2 argumenty, tj.

  • Název namapovaného SQL příkazu společného.xml tj. běžné.addEmpDetails<název souboru.vložte hodnotu ID příkazu do společného.xml>
  • mapový objekt obsahující hodnoty, které mají být vloženy do tabulky
  • tato funkce vrací primární klíč nově vloženého řádku, ale neukládáme jej.

výsledky provedení příkazu ‚Insert‘
 iBatisScreen7-InsertCode

iBatisScreen7-InsertDB

3) Test Prohlášení o aktualizaci : Vytvořte třetí test pro spuštění aktualizačního dotazu voláním ‚ metoda aktualizace.

tato metoda akceptuje 2 argumenty, tj.

  • Název namapovaného SQL příkazu společného.xml tj. běžné.updateEmpDetails<název souboru.aktualizovat hodnotu ID příkazu společné.xml>
  • mapový objekt obsahující dynamické argumenty, které mají být předány v klauzuli where aktualizačního dotazu. Pokud nechceme projít žádný argument, můžeme projít null.
  • Tato funkce vrací počet řádků ovlivněných po provedení aktualizačního dotazu, ale neukládáme jej.

výsledky provádění příkazu ‚Update‘

 iBatisScreen8-UpdateCode

iBatisScreen8-Updatedb
4) Delete test prohlášení: vytvořit fouth test spustit delete dotaz voláním ‚ delete method.

tato metoda akceptuje 2 argumenty, tj.

  • Název namapovaného SQL příkazu společného.xml tj. běžné.deleteEmpDetails<název souboru.smazat hodnotu ID příkazu společně.xml>
  • mapový objekt obsahující dynamické argumenty, které mají být předány v klauzuli WHERE delete query. Pokud nechceme projít žádný argument, můžeme projít null.
  • Tato funkce vrací počet řádků ovlivněných po provedení dotazu na odstranění, ale neukládáme jej.

výsledky provedení příkazu ‚Delete‘

iBatisScreen9-DeleteCode

iBatisScreen9-Deletedb

Jáva

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113

package com.ibatis.demo;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import com.ibatis.common.zdroj.Zdroje;
import com.ibatis.sqlmap.zákazník.SqlMapClient;
import com.ibatis.sqlmap.zákazník.SqlMapClientBuilder;
veřejná třída TestiBatisMain {
// 1. Vytvořte proměnné pro umístění souboru SQLMapConfig a jeho souboru vlastností, který mu dodá data
veřejný statický konečný řetězec SQL_PROPERTY_LOCATION = „META-INF/ibatis.vlastnosti“;
veřejný statický konečný řetězec SQL_CONFIG_LOCATION = „META-INF/SqlMapConfig.xml“;
// 2. SqlMapClient je centrální třída pro práci s SQL mapami.
/ / tato třída nám umožní spouštět mapované příkazy (vybrat, vložit, aktualizovat, odstranit atd.),
// jakmile máme instanci SqlMapClient, vše, co potřebujeme pro práci s mapami SQL, je snadno dostupné.
public static SqlMapClient sqlMapClient;
@BeforeTest
public static void configureiBatis () hází FileNotFoundException, IOException {
try {
// 3.1 Vytvořte referenční proměnnou konfiguračního rozhraní a přiřaďte k ní objekt třídy ‚PropertiesConfiguration‘
/ / pomocí této referenční proměnné můžeme číst ‚ ibatis.hodnota souboru vlastností
Configuration sqlConfig = new PropertiesConfiguration (SQL_PROPERTY_LOCATION);
// 3.2 vlastnosti, které mají být použity k poskytnutí hodnot dynamickým tokenům vlastností přítomným v sql-map-config.konfigurační soubor xml.
vlastnosti databaseProperty = nové vlastnosti();
databaseProperty.put („driver“, sqlConfig.getString(„ovladač“).střih());
databaseProperty.put („jdbcURL“, sqlConfig.getString („jdbcURL“).trim());
databaseProperty.put („uživatelské jméno“, sqlConfig.getString („uživatelské jméno“).trim());
databaseProperty.put („heslo“, sqlConfig.getString(„heslo“).trim());
systém.mimo.println („vytvoření Oracle Database connection using“
+ „\n uživatelské jméno:: „+ databaseProperty.getProperty („uživatelské jméno“)
+ „\n heslo:: „+ databaseProperty.getProperty („heslo“)
+ „\n jdbcURL:: „+ databaseProperty.getProperty („jdbcURL“)
+ „\n řidič :: „+databaseProperty . getProperty („řidič“));
// 3.3 vytvoření instance čtečky, která čte sql-map-config.xml soubor
Reader reader = Resources.getResourceAsReader (SQL_CONFIG_LOCATION);
// Třída SqlMapClientBuilder je zodpovědná za analýzu konfiguračních dokumentů a budování instance SqlMapClient.
/ / jeho současná implementace pracuje s konfiguračními soubory XML
/ / budování SqlMapClient pomocí zadaného reader a vlastnosti souboru.
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader, databaseProperty);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test(enabled=false)
public static void testInsertQueryUsingiBatis() throws FileNotFoundException, IOException, SQLException {
System.out.println( “ testInsertQueryUsingiBatis executed“);
Map<String, Object> searchparams = new HashMap<String, Object>();
searchparams.put(„emp_id“,4);
searchparams.put(„emp_name“,“SpiceCabs“);
searchparams.put(„emp_salary“,999);
if (sqlMapClient != null) {
try {
sqlMapClient.insert(„common.addEmpDetails“,searchparams);
System.out.println(„|Record Inserted Successfully|“);
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
@Test(enabled=false)
public static void testUpdateQueryUsingiBatis() throws FileNotFoundException, IOException, SQLException {
System.out.println( “ testUpdateQueryUsingiBatis executed“);
mapa< String, Object> searchparams = new HashMap< String, Object>();
searchparams.put („id“,4);
searchparams.put („plat“,777);
pokud (sqlMapClient != null) {
zkuste {
sqlMapClient.aktualizace („časté.updateEmpDetails“, searchparams);
System.mimo.println („/záznam byl úspěšně aktualizován|“);
}
catch (SQLException e) {
e.printStackTrace ();
}
}
}
@Test(enabled=true)
public static void testDeleteQueryUsingiBatis() throws FileNotFoundException, IOException, SQLException {
System.out.println( “ testDeleteQueryUsingiBatis executed“);
Map<String, Object> searchparams = new HashMap<String, Object>();
searchparams.put(„id“,1);
if (sqlMapClient != null) {
try {
sqlMapClient.delete(„common.deleteEmpDetails“, searchparams);
System.out.println(„|Record deleted Successfully|“);
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
}

Posted on

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.