Java 插入参数中的My Batis类型转换错误

Java 插入参数中的My Batis类型转换错误,java,spring,mybatis,ibatis,Java,Spring,Mybatis,Ibatis,我是迈巴蒂斯的新手。我的类中有一个java BigInteger属性。相关的mysql字段类型为BigInt。当我要用xml配置文件将记录插入数据库时,它会给出一个异常,如“找不到参数id的TypeHandler” 我的xml插入查询是 INSERT INTO xX_ ( id, date, name, connection) VALUES ( #{id}, #{date}, #{name}, #{connection} ) 请帮助我在不更改DTO类的类型的情况下修复此

我是迈巴蒂斯的新手。我的类中有一个java BigInteger属性。相关的mysql字段类型为BigInt。当我要用xml配置文件将记录插入数据库时,它会给出一个异常,如
“找不到参数id的TypeHandler”

我的xml插入查询是

INSERT INTO xX_ (
    id, date, name, connection)
    VALUES (
    #{id}, #{date}, #{name}, #{connection}
)
请帮助我在不更改DTO类的类型的情况下修复此问题。

请尝试这种方法

@Options(useGeneratedKeys = true, keyProperty = "id")
void createDetail(myDetail md);


<insert id="createDetail" parameterType="myDetail">
    INSERT INTO xX_
       ( id,
         `date`,
         `name`,
         `connection`)
    VALUES ( #{id,     javaType=BigInteger,    jdbcType=BIGINT},
             #{date},
             #{name},
             #{connection} )

    <selectKey keyProperty="id" resultType="java.math.BigInteger">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

在我以前工作的地方,我们用MyBatis和Spring

我们过去常常做如下声明 注意我们设置为jdbcType=VARCHAR的userId,然后DB驱动程序将其正确转换为BigInt或我们正在使用的任何东西

我认为我们在系统中使用了长时间的对象

<delete id="deleteJob" parameterType="com.beans.JobDetailVO">
    UPDATE JOBS.JOB
    SET
        DO_NOT_USE=#{doNotUse}
    WHERE
        JOB_ID=#{postedJobID} and USER_ID=#{userID,jdbcType=VARCHAR}
</delete>

更新JOBS.JOB
设置
不使用={doNotUse}
哪里
JOB#ID=#{postedJobID}和USER#ID=#{userID,jdbcType=VARCHAR}
至于插页,我们做了以下工作

 <insert id="insertJobDetail" parameterType="com.beans.JobDetailVO">

        INSERT INTO JOBS.JOB
        (
        JOB_ID,
        RECRUITER_TYPE_ID,
        USER_DETAIL_ID,
        HIDE_RECRUITER_INFO,
        TITLE, ....
        )
        VALUES (
        #{jobID,jdbcType=VARCHAR},
        #{recruiterTypeID ,jdbcType=VARCHAR},
        #{userDetailID ,jdbcType=VARCHAR},
        #{hideRecruiterInfo ,jdbcType=VARCHAR},
        #{jobTitle ,jdbcType=VARCHAR},
            .....
        )
        <selectKey resultType="java.lang.Long" statementType="STATEMENT" keyProperty="JobID" order="BEFORE">SELECT
            JOBS.S_JOB.NEXTVAL AS JOBID FROM DUAL
        </selectKey>

    </insert>

插入到JOBS.JOB中
(
工作证,
招聘人员类型ID,
用户\u详细信息\u ID,
隐藏招聘人员信息,
标题
)
价值观(
#{jobID,jdbcType=VARCHAR},
#{recruiterTypeID,jdbcType=VARCHAR},
#{userDetailID,jdbcType=VARCHAR},
#{hideRecruiterInfo,jdbcType=VARCHAR},
#{jobTitle,jdbcType=VARCHAR},
.....
)
挑选
JOBS.S_JOB.NEXTVAL作为来自DUAL的JOBID
请看这里:

要使用BigInteger和BigInt,您必须编写一个自定义typeHandler,如下所示:

// ExampleTypeHandler.java
@MappedTypes(BigInteger.class)
public class BigIntegerTypeHandler extends BaseTypeHandler<BigInteger> {

  //implement all methods
}
<!-- mybatis-config.xml -->
<typeHandlers>
  <typeHandler handler="your.packadge.BigIntegerTypeHandler"/>
</typeHandlers>
//ExampleTypeHandler.java
@MappedTypes(BigInteger.class)
公共类BigIntegerTypeHandler扩展了BaseTypeHandler{
//实施所有方法
}
按如下方式配置config.xml:

// ExampleTypeHandler.java
@MappedTypes(BigInteger.class)
public class BigIntegerTypeHandler extends BaseTypeHandler<BigInteger> {

  //implement all methods
}
<!-- mybatis-config.xml -->
<typeHandlers>
  <typeHandler handler="your.packadge.BigIntegerTypeHandler"/>
</typeHandlers>


它一定会有帮助。

发布你的映射器文件或界面你的问题与spring有什么关系?这是我的映射器。插入xX(id、日期、名称、连接)值(#{id}、#{date}、#{name}、#{connection})选择最后一个_INSERT_id(),哪个字段会出错?