MyBatis en tiempos de Java 8-17
Edgar Rios Navarro

Edgar Rios Navarro @e240683

About: Tech Lead | Backend | CI/CD | Cloud

Joined:
Mar 15, 2021

MyBatis en tiempos de Java 8-17

Publish Date: Apr 2 '22
7 0

Podríamos considerar a MyBatis, como la versión ligera de Hibernate. El cual se mantiene presente y adaptándose a los cambios de Java, en sus últimas versiones.

La versión estable corresponde a 3.5.9.

dependencies {

    implementation 'org.mybatis:mybatis:3.5.9'
    implementation 'com.oracle.database.jdbc:ojdbc8:19.6.0.0'
}
Enter fullscreen mode Exit fullscreen mode

Estos son dos ejemplos que bien deberíamos usarlos, al utilizar MyBatis en nuestros proyectos.

1) Ya no necesitamos cerrar la sesión de forma explícita. Con
Try-With-Resources (Java7) dejamos esa acción a la JVM.
Y al emplear Local-Variable (Java10), hacemos más legible el código.

try (var sqlSession = sqlSessionFactory.openSession()) { //.1
            MapperRecaudacion mapper = sqlSession.getMapper(MapperRecaudacion.class);
            mapper.getTipoCambio3(mapParametros);
            vTipoCambio = (BigDecimal)mapParametros.get("nValorTipoCambio");
        } catch (Exception e) {
            log.error("", e);
        }
Enter fullscreen mode Exit fullscreen mode

2) Para construir la sentencia SQL (el ejemplo corresponde a un SP de Oracle), nos valemos de Text Block (Java15).

    @Select(value = """
            {call #{nValorTipoCambio, mode=OUT, jdbcType=NUMERIC} := 
                FARMA_UTILITY.OBTIENE_TIPO_CAMBIO3(
                    #{cCodGrupoCia_in},#{cCodCia_in},#{cFecCambio_in},#{cTipo})}""") //.2
    @Options(statementType = StatementType.CALLABLE)
    void getTipoCambio3(Map<String, Object> mapParametros);
Enter fullscreen mode Exit fullscreen mode

3) Adicionalmente, podemos reemplazar el operador ternario con Optional (Java8).

        //return vTipoCambio == null?0.0:vTipoCambio.doubleValue();
        return Optional.ofNullable(vTipoCambio)
                .map(BigDecimal::doubleValue)
                .orElse(0.0); //.3
Enter fullscreen mode Exit fullscreen mode

Documentación



Try-With-Resources

JEP 286: Local-Variable Type Inference

JEP 378: Text Blocks

Optional

Comments 0 total

    Add comment