Java 插入参数中的My Batis类型转换错误
我是迈巴蒂斯的新手。我的类中有一个java BigInteger属性。相关的mysql字段类型为BigInt。当我要用xml配置文件将记录插入数据库时,它会给出一个异常,如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类的类型的情况下修复此
“找不到参数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(),哪个字段会出错?