Integración de Mybatis Plus en Spring Boot 3.0

Mybatis Plus: Herramienta de Mejora para Mybatis

MyBatis-Plus (MP) es una extensión para MyBatis que conserva todas sus funcionalidades originales mientras añade mejoras para simplificar el desarrollo. Características principales:

  • No intrusivo: No modifica el comportamiento base de MyBatis
  • Operaciones CRUD automáticas: Inyección inmediata de métodos básicos
  • Constructor de condiciones: Permite crear consultas complejas mediante programación
  • Soporte Lambda: Prevención de errores en nombres de campos
  • Ganerador de código integrado: Automatiza creación de entidades y mapeadores
  • Plugin de paginación: Compatible con múltiples bases de datos

Configuración en Spring Boot 3.0

1. Dependencias Maven

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>3.0.3</version>
</dependency>

2. Configuración de Base de Datos

spring.datasource.url=jdbc:mysql://servidor:3306/basedatos
spring.datasource.username=usuario
spring.datasource.password=clave
mybatis-plus.mapper-locations=classpath:/mappers/**/*.xml
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

3. Entidad y Mapeador

// Entidad
@Data
public class Evento {
    private Long id;
    private String nombre;
    private LocalDateTime fecha;
}

// Mapeador
@Mapper
public interface EventoMapper extends BaseMapper<Evento> {}

4. Servicio y Prueba

// Servicio
public interface EventoService extends IService<Evento> {}

@Service
public class EventoServiceImpl extends ServiceImpl<EventoMapper, Evento> 
    implements EventoService {}

// Prueba
@SpringBootTest
class EventoServiceTest {
    @Autowired
    private EventoService service;

    @Test
    void contarRegistros() {
        long total = service.count();
        System.out.println("Total registros: " + total);
    }
}

Ejemplos de Consultas

Consultas Básicas

// Consulta por ID
Evento evento = eventoMapper.selectById(101L);

// Consulta múltiple
List<Evento> eventos = eventoMapper.selectList(null);

// Consulta con condiciones
QueryWrapper<Evento> filtro = new QueryWrapper<>();
filtro.gt("fecha", LocalDateTime.now().minusDays(7));
List<Evento> recientes = eventoMapper.selectList(filtro);

Paginación

@Bean
public MybatisPlusInterceptor paginador() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
    return interceptor;
}

// Uso en servicio
Page<Evento> pagina = new Page<>(1, 5);
QueryWrapper<Evento> orden = new QueryWrapper<>().orderByDesc("fecha");
Page<Evento> resultado = eventoMapper.selectPage(pagina, orden);

Etiquetas: SpringBoot MyBatisPlus java SpringFramework SQL

Publicado el 7-15 23:36