DEV Community

Edgar Rios Navarro
Edgar Rios Navarro

Posted on • Edited on

4 2

MyBatis en tiempos de Java 8-17

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

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay