Manipulador de processador do tipo LocalDateTime personalizado Mybatis

Índice

1 dependências maven

2 LocalDateTimeTypeHandler


1 dependências maven

		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.1</version>
		</dependency>

2 LocalDateTimeTypeHandler

Reescreva LocalDateTimeTypeHandler para resolver o problema de conversão de shardingsphere + mybatis LocalDateTime

package com.xudongbase.mybatis.handler;

import org.apache.ibatis.type.JdbcType;
import org.springframework.stereotype.Component;

import java.sql.*;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

/**
 * 重写LocalDateTimeTypeHandler ,解决shardingsphere + mybatis LocalDateTime转换问题
 *
 * @author xudongmaster
 */
@Component
public class LocalDateTimeTypeHandler extends org.apache.ibatis.type.LocalDateTimeTypeHandler {
    public LocalDateTimeTypeHandler() {
    }

    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, LocalDateTime parameter, JdbcType jdbcType) throws SQLException {
        ps.setTimestamp(i, new Timestamp(this.toTimeMillis(parameter)));
    }

    @Override
    public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException {
        Timestamp sqlTimestamp = rs.getTimestamp(columnName);
        return sqlTimestamp != null ? this.toLocalDateTime(sqlTimestamp.getTime()) : null;
    }

    @Override
    public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
        Timestamp sqlTimestamp = rs.getTimestamp(columnIndex);
        return sqlTimestamp != null ? this.toLocalDateTime(sqlTimestamp.getTime()) : null;
    }

    @Override
    public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
        Timestamp sqlTimestamp = cs.getTimestamp(columnIndex);
        return sqlTimestamp != null ? this.toLocalDateTime(sqlTimestamp.getTime()) : null;
    }

    private long toTimeMillis(LocalDateTime dateTime) {
        return dateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    private LocalDateTime toLocalDateTime(long timeMillis) {
        return new Date(timeMillis).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    }
}

Espaço pessoal de Xudongguai-Página pessoal de Xudongguai-哔哩哔哔vídeo哔哩哔哩 Espaço pessoal de Xudongguai, fornecendo vídeo, áudio, artigos, notícias, favoritos e outros conteúdos compartilhados por Xudongguai, siga Xudong Culpe a conta, conheça a dinâmica da nota UP em a primeira vez. O vale da vida não é terrível, o que é terrível é que não podemos persistir até o ponto de virada da vida https://space.bilibili.com/484264966?spm_id_from=333.1007.0.0

Acho que você gosta

Origin blog.csdn.net/qq_38974638/article/details/129762669
Recomendado
Clasificación