Ibatis
This is version . It is not the current version, and thus it cannot be edited.
Back to current version   Restore this version

Ibatis ist ein Object-Relational-Mapper der auf einem recht enfachen Ansatz beruht. In einer XML-Konfigurationsdatei werden SQL-Ausdrücke definiert, die auf Objekte gemappt werden. Der Ansatz von Ibatis unterscheidet sich zu Hibernate darin, dass SQL-Ausdrücke grundsätzlich per Hand definiert werden. Bei Hibernate die SQL-Ausdrücke für das reine CRUD-Mapping zwar automatisch generiert, dafür zum Teil umständlich mit Annotations gesteuert werden. Daher entfällt auch eine zusätzliche Skriptsprache wie etwa HQL bei Hibernate, Definitionen werden einheitlich in SQL spezifiziert.

Standalone Setup#

Um Ibatis völlig eigenständig betreiben zu können, braucht man nur zum Beispiel mybatis-2.3.5.jar und das SQL-Treiber-JAR.

Das Bootsrapping erfolgt durch den SqlMapClientBuilder der mit einer XML-Config-Datei versorgt wird und einen SqlMapClient erzeugt:

    InputStream stream = getClass().getResourceAsStream("sql-map-config.xml");
    SqlMapClient client = SqlMapClientBuilder.buildSqlMapClient(stream);

Diese Config-Datei kann wir folgt aussehen:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "sql-map-config-2.dtd">
<sqlMapConfig>
	<settings useStatementNamespaces="true"/>
	<typeHandler javaType="java.net.URI" callback="com.bayer.pixpt_interface.db.UriTypeHandler"/>
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
			<property name="JDBC.ConnectionURL"
				value="jdbc:sqlserver://host:1433;databaseName=database"/>
			<property name="JDBC.Username" value="username"/>
			<property name="JDBC.Password" value="password"/>
		</dataSource>
	</transactionManager>
	<sqlMap resource="com/intersult/db/sql-map.xml"/>
</sqlMapConfig>

Diese Datei referenziert eine odere mehrere Mapping-Dateien, die mit Namespaces versehen werden können. Darin werden die eigentlichen Mappings definiert:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "sql-map-2.dtd">
<sqlMap namespace="test">
    <select id="test" resultClass="int">
        select 7
    </select>
</sqlMap>

Aufgerufen wird das ganze aus dem Java-Code dann wie folgt:

    Integer result = (Integer)client.queryForObject("test.test");