Oracle-magpie документация


0. Основной файл конфигурации

<config>
   <data-source class="oracle.jdbc.pool.OracleDataSource"
      url="jdbc:oracle:thin:@127.0.0.1:1521:db102"
      user="bookstore" password="bookstore">
   </data-source>
   <mappings>
      <file name="./bin/resources/test-mappings.xml"/>
      <annotated-type class="ru.pan.magpie.mocks.Review" />
      <annotated-object class="ru.pan.magpie.proxies.PKG_TEST_MAPPINGS" />
   </mappings>
</config>



1. Маппинги типов

Маппинги классов-сущностей

<class-mapping class="tutor.model.Customer" db-type="TCUSTOMER" owner="BOOKSTORE">
  <field name="customerId" db-name="customerId" />
  <field name="orders" db-name="orders"
    element-class="tutor.model.Order" collection-merging="update"/>
  <field name="registrationDate" db-name="registrationDate" />
  <property-group name="cuttedCustomer" behavior="skip" default="false">
    <property name="orders" group="cuttedOrder"/>
    <property name="customerId"/>
  </property-group>
</class-mapping>

Маппинги классов-значений


<value-mapping class="java.lang.Boolean">
      <sql-type name="NUMBER"
            to-oracle-method="ru.pan.magpie.convert.standards.NumberConversions.booleanToBigDecimal"
            from-oracle-method="ru.pan.magpie.convert.standards.NumberConversions.bigDecimalToBoolean" />
</value-mapping>

2. Таблица предопределенных маппингов-значений

Маппинги заданы в файле default-mappings.xml
Java class SQL Data Type Notes

java.lang.String

CHAR, VARCHAR2, CHARACTER, STRING, VARCHAR, LONG, CLOB, ROWID

java.util.Date

DATE,TIMESTAMP

byte[]

BLOB

java.math.BigDecimal

PLS_INTEGER, BINARY_INTEGER, NATURAL, NATURALN, POSITIVE, POSITIVEN, NUMBER, DEC, DECIMAL, NUMERIC, FLOAT, INT, SMALLINT, INTEGER, REAL

java.math.BigInteger, byte, java.lang.Byte, java.lang.Short, short, int, java.lang.Integer, long, java.lang.Long, float, java.lang.Float, double, java.lang.Double

NUMBER

boolean, java.lang.Boolean

NUMBER

0-false, 1-true

int, java.lang.Integer

INTEGER, BINARY_INTEGER

long, java.lang.Long

INTEGER, LONG

float, java.lang.Float

BINARY_FLOAT

double, java.lang.Double

BINARY_DOUBLE



3. Маппинги интерфейсов

<db-object object-is="package" class="tutor.proxies.PKG_BOOKS_API"
         name="PKG_BOOKS_API" owner="BOOKSTORE" base-class="">
    <procedure java-name="formatBookIsbns" db-name="formatBookIsbns"
        in-group="" out-group="">
    <return class="java.util.List" element-class="tutor.model.Customer" out-group=""/>
    <argument position="0" class="java.util.List" db-name="books"
        element-class="tutor.model.Book" collection-merging="reload"
        in-group="" out-group=""/>
    </procedure>
</db-object>

4. Использование аннотаций


Альтернативой объявлению маппингов в xml конфигурационных файлах является возможность их задания с помощью java аннотаций. Таблица ниже показывает соответствие между xml-элементами и аннотациями.

XML element Annotation

class-mapping

DBType

class-mapping.class

-

class-mapping.db-type

DBType.name()

class-mapping.owner

DBType.owner()

field

DBTypeField

field.name

-

field.db-name

DBTypeField.name()

field.element-class

DBTypeField.elementClass()

field.collection-merging

DBTypeField.collectionMerging()

property-group

-

value-mapping

-

db-object

DBObject

db-object.class

-

db-object.name

DBObject.name()

db-object.object-is

DBObject.type()

db-object.owner

DBObject.owner()

db-object.base-class

DBObject.baseClass()

procedure

DBProcedure

procedure.java-name

-

procedure.db-name

DBProcedure.name()

procedure.in-group

DBProcedure.inPropertyGroup()

procedure.out-group

DBProcedure.outPropertyGroup()

return

-

return.class

-

return.element-class

DBProcedure.returnElementClass()

return.out-group

DBProcedure.returnOutPropertyGroup()

argument

DBArgument

argument.position

-

argument.class

-

argument

DBArgument

argument.db-name

DBArgument.name()

argument.in-group

DBArgument.inPropertyGroup()

argument.out-group

DBArgument.outPropertyGroup()

argument.element-class

DBArgument.elementClass()

argument.collection-merging

DBArgument.collectionMerging()



5. API библиотеки

Oracle-magpie JavaDoc API reference