es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo establecer un valor de campo en una entidad guardada en MyBatis?

Aquí está mi método guardar para una entidad. Verifica un valor nulo de un campo no nulo surcharge que tiene un valor predeterminado de ‘verdadero’ en mi base de datos:

<insert id="saveBundle" parameterType="Bundle">
        <selectKey keyColumn="id" keyProperty="id" resultType="long" order="BEFORE">
            select nextval('bundle_id_seq')
        </selectKey>
        insert into bundle(id, created, config_bundle_id, client_id, pif_type, renew_date,
        status, status_at, agreement, config_plan_id, processing_status, pre_payment_check, pre_payment_check_at,
        updated_at, renew_date_at <if test="surcharge != null">, surcharge</if>)
        VALUES (
        #{id,jdbcType=BIGINT},
        #{created,jdbcType=TIMESTAMP},
        #{configBundleId,jdbcType=BIGINT},
        #{clientId,jdbcType=BIGINT},
        #{pifType,jdbcType=VARCHAR},
        #{renewDate,jdbcType=TIMESTAMP},
        #{status, jdbcType=VARCHAR},
        #{statusAt,jdbcType=TIMESTAMP},
        #{agreement,jdbcType=VARCHAR},
        #{configPlanId,jdbcType=BIGINT},
        #{processingStatus,jdbcType=VARCHAR},
        #{prePaymentCheck,jdbcType=VARCHAR},
        #{prePaymentCheckAt, jdbcType=TIMESTAMP},
        #{updatedAt, jdbcType=TIMESTAMP},
        #{renewDateAt, jdbcType=TIMESTAMP}
        <if test='surcharge != null'>, #{surcharge, jdbcType=BOOLEAN}</if>
        )
    </insert>

Aquí está el método de interfaz:

void saveBundle(Bundle bundle);

A veces necesito guardar mi entidad y luego verificar el parámetro surcharge. No establezco el valor usando el setter, así que MyBatis lo establece como ‘verdadero’ en mi tabla de base de datos. La solicitud no establece el parámetro en la entidad, solo en la base de datos. ¿Es posible establecer el parámetro en la entidad utilizando solo el mapper/interfaces de MyBatis o la solicitud sin utilizar el setter de la entidad?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No, es imposible establecer el parámetro en la entidad utilizando sólo el mapper/interface de MyBatis o la solicitud sin utilizar el setter de la entidad. El método setter de la entidad es responsable de establecer el valor del atributo de la entidad, y MyBatis sólo se encarga de mapear los datos desde la base de datos a la entidad. Si necesita establecer el valor del atributo ‘surcharge’ de la entidad ‘Bundle’, deberá llamar al método setter antes de guardar la entidad o modificar el método ‘saveBundle’ para que acepte el valor de ‘surcharge’ por separado y establecerlo en la entidad antes de guardarla.

Comments are closed.