Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,8 @@
<artifactId>maven-site-plugin</artifactId>
<configuration>
<locales>en,es,zh_CN,ja,ko</locales>
<!-- Build using files that replace a placeholder using project properties -->
<siteDirectory>${project.build.directory}/site-src</siteDirectory>
</configuration>
</plugin>
</plugins>
Expand All @@ -346,6 +348,12 @@
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
<!-- Copy for replacing a placeholder using project properties -->
<resource>
<directory>${project.basedir}/src/site</directory>
<targetPath>${project.build.directory}/site-src</targetPath>
<filtering>true</filtering>
</resource>
</resources>
<testResources>
<testResource>
Expand Down
18 changes: 18 additions & 0 deletions src/site/es/markdown/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Tabla de contenido

Esta página es para representar el índice en GitHub.

> **NOTE:**
>
> Dado que el destino del enlace se especifica asumiendo que se convierte a html con maven-site-plugin, hay un ancla que se rompe en el renderizado en GitHub.

* [Introducción](./index.md)
* [Primeros pasos](./getting-started.md)
* [SqlSessionFactoryBean](./factorybean.md)
* [Transactions](./transactions.md)
* [Uso de SqlSession](./sqlsession.md)
* [Inyección de Mappers](./mappers.md)
* [Spring Boot](./boot.md)
* [Uso del API de MyBatis](./using-api.md)
* [Spring Batch](./batch.md)
* [Código de ejemplo](./sample.md)
351 changes: 351 additions & 0 deletions src/site/es/markdown/batch.md

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/site/es/markdown/boot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<a name="Using_Spring_Boot"></a>
# Using Spring Boot

Please see the [MyBatis Spring-boot-starter](http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure) sub project docs for details.
100 changes: 100 additions & 0 deletions src/site/es/markdown/factorybean.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<a name="SqlSessionFactoryBean"></a>
# SqlSessionFactoryBean

En MyBatis una `SqlSessionFactory` se crea mediante la clase `SqlSessionFactoryBuilder`. En MyBatis-Spring se usa la clase `SqlSessionFactoryBean` en su lugar.

## Configuración

Para crear un factory bean, pon lo siguiente en el fichero XML de configuración de Spring:

```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
```

La clase `SqlSessionFactoryBean` implementa el interfaz `FactoryBean` (see [the Spring documentation(Core Technologies -Customizing instantiation logic with a FactoryBean-](https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-extension-factorybean)).
Lo cual significa que el bean que crea Spring en última instancia **no** es un `SqlSessionFactoryBean` en si mismo, sino el objeto que la factoria devuelve como resultado de la llamada al método `getObject()`.
En este caso, Spring creará un bean `SqlSessionFactory` durante el arranque de la aplicación y lo guardará bajo el nombre `sqlSessionFactory`. En Java, el código equivalente sería:

```java
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory() {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();
}
}
```

Normalmente no necesitarás utilizar directamente un `SqlSessionFactoryBean` o su correspondiente `SqlSessionFactory` directly.
En su lugar, la factoría se utilizará para ser inyectada en `MapperFactoryBean`s o DAOs que extiendan de `SqlSessionDaoSupport`.

## Properties

La clase `SqlSessionFactory` solo tiene una propiedad obligatoria, un `DataSource`.
Puede ser cualquier `DataSource` y se puede configurar como cualquier otra conexión a base de daots de Spring.

Una propiedad muy común es la `configLocation` que se utiliza para indicar la localización del fichero de configuración XML de MyBatis.
Normalmente solo es necesario dicho fichero si se requiere cambiar los valores por defecto de las secciones `<settings>` o `<typeAliases>`.

Es importante saber que este fichero de configuración **no** tiene por qué ser un fichero de configuración de MyBatis completo.
Concretamente, los environments, dataSources y transactionManagers serán **ignorados**.
`SqlSessionFactoryBean` crea su propio `Environment` de MyBatis con los valores configurados tal y como se requieren.

Otro motivo para necesitar un fichero de configuración es que los ficheros de mapeo XML no estén en el mismo lugar del classpath que los mapper interfaces.
En este caso hay dos opciones. La primera es especificar manualmente el classpath de los ficheros XML usando la sección `<mappers>` del fichero de configuración de MyBatis.
La segunda opción es usar la propiedad `mapperLocations` del factory bean.

La propiedad `mapperLocations` recibe una lista de localizaciones de recursos. Se utiliza para indicar la ubicación de los ficheros de mapeo XML de MyBatis.
El valor puede contener un patron tipo Ant para cargar todos los ficheros de un directorio o buscar de forma recursiva en todos los paths desde una localización base. Por ejemplo:

```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" />
</bean>
```

Esto cargaría todos los ficheros de mapeo XML en el paquete sample.config.mappers y sus subpaquetes.

Otra propiedad que puede ser necesaria en un entorno con transacciones gestionadas por contenedor es la `transactionFactoryClass`. Lee la sección de transacciones para obtener más detalles.

En caso de usar la característica multi-db necesitarás informar la propiedad `databaseIdProvider` de la siguiente forma:

```xml
<bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
<property name="properties">
<props>
<prop key="SQL Server">sqlserver</prop>
<prop key="DB2">db2</prop>
<prop key="Oracle">oracle</prop>
<prop key="MySQL">mysql</prop>
</props>
</property>
</bean>
```
```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:sample/config/mappers/**/*.xml" />
<property name="databaseIdProvider" ref="databaseIdProvider"/>
</bean>
```

<span class="label important">NOTE</span>
Since 1.3.0, `configuration` property has been added. It can be specified a `Configuration` instance directly without MyBatis XML configuration file.
For example:

```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configuration">
<bean class="org.apache.ibatis.session.Configuration">
<property name="mapUnderscoreToCamelCase" value="true"/>
</bean>
</property>
</bean>
```
99 changes: 99 additions & 0 deletions src/site/es/markdown/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<a name="Primeros_pasos"></a>
# Primeros pasos

Este capítulo te mostrará en pocos pasos cómo instalar y configurar MyBatis-Spring y cómo construir
una pequeña aplicación transaccional.

## Instalación

Para usar el módulo MyBatis-Spring, debes incluir el fichero `mybatis-spring-${project.version}.jar` y sus dependencias en el classpath.

Si usas Maven simplemente añade la siguiente dependencia a tu pom.xml:

```xml
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${project.version}</version>
</dependency>
```

## Configuración rápida

Para usar MyBatis con Spring necesitas definir al menos dos cosas en tu contexto Spring: una `SqlSessionFactory` y al menos un mapper interface.

En MyBatis-Spring se usa un `SqlSessionFactoryBean` para crear una `SqlSessionFactory`. Para configurar la factory bean pon lo siguiente en tu fichero de configuración de Spring:

```xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
```

```java
@Configuration
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();
}
}
```

Observa que la `SqlSessionFactory` requiere un `DataSource`. Éste puede ser cualquier `DataSource` y debe configurarse como cualquier otra conexión a base de datos de Spring.

Asumamos que tienes un mapper interface definido de la siguiente forma:

```java
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{userId}")
User getUser(@Param("userId") String userId);
}
```

Este interface se añade a Spring usando un `MapperFactoryBean` de la siguiente forma:

```xml
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
```

Observa que la clase del mapper indicada **debe** ser un interface, no una implementación. En este ejemplo se usan anotaciones para especificar la SQL, pero también es posible usar un fichero de mapeo XML.

Una vez configurado, puedes inyectar mappers directamente en tus beans de servicio/negocio de la misma forma que inyectarías cualquier otro bean en Spring.
La clase `MapperFactoryBean` se encargará de obtener una `SqlSession` y de cerrarla. Si hay una transación Spring en curso, la sesión se comitará o se hará rollback cuando la transacción finalice.
Finalmente, cualquier excepción será traducida a una excepión `DataAccessException`s de Spring.

If you use the Java Configuration:

```java
@Configuration
public class MyBatisConfig {
@Bean
public UserMapper userMapper() throws Exception {
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory());
return sqlSessionTemplate.getMapper(UserMapper.class);
}
}
```

Invocar a MyBatis es sólo una línea de código:

```java
public class FooServiceImpl implements FooService {

private final UserMapper userMapper;

public FooServiceImpl(UserMapper userMapper) {
this.userMapper = userMapper;
}

public User doSomeBusinessStuff(String userId) {
return this.userMapper.getUser(userId);
}
}
```
55 changes: 55 additions & 0 deletions src/site/es/markdown/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<a name="Introduction"></a>
# Introduction

## ¿Qué es MyBatis-Spring?

MyBatis-Spring permite integrar MyBatis con Spring. Esta librería permite que MyBatis participe en trasacciones Spring,
se encarga de constuir mappers y `SqlSession`s e inyectarlos en otros beans, traduce excepciones de MyBatis en excepcines `DataAccessException`s de Spring y finalmente, permite construir aplicaciones libres de dependencias de MyBatis, Spring y MyBatis-Spring.

## Motivación

Spring version 2 sólo soporta iBATIS version 2. See hizo un intento de incluir el soporte de MyBatis 3 en Spring 3 (ver el [issue Jira](https://jira.springsource.org/browse/SPR-5991)).
Pero desafortunadamente, el desarrollo de Spring 3 finalizó antes de que MyBatis 3 fuera liberado oficialmente.
Dado que el equipo de Spring no quería liberar una versión basada en un producto no terminado el soporte de oficial tenía que esperar.
Dado el interés de la comunidad en el soporte de MyBatis, la comunidad de MyBatis decidió que era el momento de unificar a los colaboradores interesados y proporcionar la integración con Spring como un sub-projecto de MyBatis en su lugar.

## Requisitos

Antes de comenzar con MyBatis-Spring, es muy importante que estés familiarizado con la terminología tanto de MyBatis como de Spring.
Este documento no pretende proporcionar información de configuración básica de MyBatis o Spring.

MyBatis-Spring requires following versions:

| MyBatis-Spring | MyBatis | Spring Framework | Spring Batch | Java |
| --- | --- | --- | --- | --- |
| **2.0** | 3.5+ | 5.0+ | 4.0+ | Java 8+ |
| **1.3** | 3.4+ | 3.2.2+ | 2.1+ | Java 6+ |

## Agradecimientos

Queremos agradecer a la todos los que han hecho de este proyecto una realidad (en orden alfabético):
Eduardo Macarron, Hunter Presnall y Putthiphong Boonphong por la codificación, pruebas y documentación;
a Andrius Juozapaitis, Giovanni Cuccu, Mike Lanyon, Raj Nagappan y Tomas Pinos por sus contribuciones;
y a Simone Tripodi por encontrarlos a todos y traerlos al proyecto MyBatis ;) Sin ellos este proyecto no existiría.

## Colabora en mejorar esta documentación...

Si ves que hay alguna carencia en esta documentación, o que falta alguna característica por documentar, te animamos a que lo investigues y la documentes tu mismo!

Las fuentes de este manual están disponibles en formato xdoc en el [Git del proyecto](https://github.com/mybatis/mybatis-3/tree/master/src/site). Haz un fork, cambialas y envía un pull request.

Eres el mejor candidato para documentar porque los lectores de esta documentación son gente como tú!

## Translations

Users can read about MyBatis-Spring in the following translations:

<ul class="i18n">
<li class="en"><a href="./../index.html">English</a></li>
<li class="es"><a href="./getting-started.html">Español</a></li>
<li class="ja"><a href="./../ja/index.html">日本語</a></li>
<li class="ko"><a href="./../ko/index.html">한국어</a></li>
<li class="zh"><a href="./../zh/index.html">简体中文</a></li>
</ul>

Do you want to read about MyBatis in your own native language? Fill an issue providing patches with your mother tongue documentation!
Loading