All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.zeimao77.product.sql.DefaultPreparedStatementSetter Maven / Gradle / Ivy

package top.zeimao77.product.sql;

import top.zeimao77.product.exception.BaseServiceRunException;
import static top.zeimao77.product.exception.ExceptionCodeDefinition.SQLEXCEPTION;

import top.zeimao77.product.json.Ijson;
import top.zeimao77.product.util.CalendarDateUtil;
import top.zeimao77.product.util.LocalDateTimeUtil;
import top.zeimao77.product.util.StringOptional;

import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.sql.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class DefaultPreparedStatementSetter implements PreparedStatementSetter {

    public static DefaultPreparedStatementSetter INSTANCE = new DefaultPreparedStatementSetter();

    @Override
    public void setParam(PreparedStatement preparedStatement, int index, Class javaType, int jdbcType, Object value) {
        try {
            if(value == null) {
                preparedStatement.setNull(index, Types.NULL);
            } else if(String.class.isAssignableFrom(javaType)) {
                preparedStatement.setString(index, (String) value);
            } else if(StringOptional.class.isAssignableFrom(javaType)) {
                preparedStatement.setString(index,((StringOptional)value).isBlack() ? null : ((StringOptional)value).get());
            } else if(Integer.class.isAssignableFrom(javaType)) {
                preparedStatement.setInt(index, ((Integer) value));
            } else if(Long.class.isAssignableFrom(javaType)) {
                preparedStatement.setLong(index,(Long)value);
            } else if(Double.class.isAssignableFrom(javaType)) {
                preparedStatement.setDouble(index,(Double)value);
            } else if(Short.class.isAssignableFrom(javaType)) {
                preparedStatement.setShort(index,(Short)value);
            } else if(Float.class.isAssignableFrom(javaType)) {
                preparedStatement.setFloat(index,(Float)value);
            } else if(BigDecimal.class.isAssignableFrom(javaType)) {
                preparedStatement.setBigDecimal(index, (BigDecimal) value);
            } else if(Boolean.class.isAssignableFrom(javaType)) {
                preparedStatement.setBoolean(index,(Boolean)value);
            } else if(LocalDateTime.class.isAssignableFrom(javaType) && (jdbcType == StatementParameter.DEFAULT_JDBCTYPE || jdbcType == Types.VARCHAR)) {
                preparedStatement.setString(index, LocalDateTimeUtil.toDateTime(((LocalDateTime) value)));
            } else if(LocalDateTime.class.isAssignableFrom(javaType) && (jdbcType == Types.TIMESTAMP)) {
                preparedStatement.setTimestamp(index, Timestamp.valueOf(((LocalDateTime) value)));
            } else if(LocalDate.class.isAssignableFrom(javaType) && (jdbcType == StatementParameter.DEFAULT_JDBCTYPE || jdbcType == Types.VARCHAR)) {
                preparedStatement.setString(index, LocalDateTimeUtil.toDate(((LocalDate) value)));
            } else if(LocalDate.class.isAssignableFrom(javaType) && (jdbcType == Types.DATE)) {
                preparedStatement.setDate(index, Date.valueOf(((LocalDate) value)));
            } else if(LocalTime.class.isAssignableFrom(javaType) && (jdbcType == StatementParameter.DEFAULT_JDBCTYPE || jdbcType == Types.VARCHAR)) {
                preparedStatement.setString(index, LocalDateTimeUtil.toTime(((LocalTime) value)));
            } else if(LocalTime.class.isAssignableFrom(javaType) && (jdbcType == Types.TIME)) {
                preparedStatement.setTime(index, Time.valueOf(((LocalTime) value)));
            } else if(java.util.Date.class.isAssignableFrom(javaType) && jdbcType == Types.TIMESTAMP){
                preparedStatement.setTimestamp(index,new Timestamp(((java.util.Date) value).getTime()));
            } else if(java.util.Date.class.isAssignableFrom(javaType) && jdbcType == Types.DATE){
                preparedStatement.setDate(index,new Date(((java.util.Date) value).getTime()));
            } else if(java.util.Date.class.isAssignableFrom(javaType) && jdbcType == Types.TIME){
                preparedStatement.setTime(index,new Time(((java.util.Date) value).getTime()));
            } else if(java.util.Date.class.isAssignableFrom(javaType) && (jdbcType == StatementParameter.DEFAULT_JDBCTYPE || jdbcType == Types.VARCHAR)) {
                preparedStatement.setString(index, CalendarDateUtil.toDateTime((java.util.Date) value));
            } else if(Ijson.class.isAssignableFrom(javaType)) {
                preparedStatement.setString(index, ((Ijson)value).toJsonString(false));
            } else if(ByteBuffer.class.isAssignableFrom(javaType)) {
                preparedStatement.setBytes(index, ((ByteBuffer) value).array());
            }
        } catch (SQLException e) {
            throw new BaseServiceRunException(SQLEXCEPTION,"SQL错误",e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy