Не удалось задать параметры для сопоставления в Mybatis при использовании фреймворка Springboot

#java #spring-boot #mybatis

#Ява #пружинный ботинок #мыбатис

Вопрос:

Я новичок в Java web и перепробовал множество способов в Stack Overflow, чтобы решить эту проблему, но потерпел неудачу. Не могли бы вы мне помочь?

Интерфейс в моем коде такой:

 public Listlt;Answergt; selectAnswerByUser(@Param("user") User user, @Param("id") Integer id);  

где Answer и User являются двумя классами, которые я определил.

Картограф-это:

 lt;select id="selectAnswerByUser" parameterType="java.util.Map" resultType="Answer"gt;  select * from answer where exercise_id=#{id} and user_email='#{user.email}' lt;/selectgt;  

где электронная почта-это переменная пользователя класса.

И это бросает:

 nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='user.email', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}.  Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property.  Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property.  Cause: java.sql.SQLException: Parameter index out of range (2 gt; number of parameters, which is 1).  

Я понятия не имею об исключении.

Комментарии:

1. Удалите одинарные кавычки. MyBatis #{} заменяет заполнитель ? java.sql.PreparedStatement , однако, если заполнитель заключен в одинарные кавычки, драйвер распознает его как строковый литерал.

Ответ №1:

Вы настраиваете параметр parameterType parameterType="java.util.Map" «когда», когда вы передаете два параметра «Пользователь» и «Целое число». Удалите parameterType="java.util.Map" , и он должен отображать parameterTypes «автоматически» на основе @Param аннотации. Или попробуйте с parameterType="map"