Próbuję zaprojektować małe narzędzie CRUD i jak do tej pory każdy aspekt (Rich Faces UI i Managed Beans, sprawdzanie poprawności, baza danych mySQL, itp.) Będzie dobrze, ale nie kawałek myBatis.MyBatis mapper do wywoływania PROC z wieloma parametrami IN
Jestem względnie nowy w myBatis i prowadzę poradnik dla użytkowników i API pod ręką, ale tam są pewne rzeczy, które po prostu nie będą się ze mną spotykać, a jedno to jakikolwiek telefon do procedury z udziałem wiele parametrów IN. Oto przykład:
To z DB skonfigurować skrypty:
create procedure MY_FOO_PROC (IN valA VARCHAR(15), IN valB CHAR(1))
begin
select blah from blah where blah = valA and blah = valB etc.;
end
To z MyMapper.java:
public interface MyMapper {
List<MyFooClass> getProgress (
@Param("valA") String valueA, @Param("valB") String valueB);
}
To z MyMapper.xml:
<select id="getProgress" parameterType="map"
resultMap="MyFooMap" statementType="CALLABLE">
{ call MY_FOO_PROC (
#{valA, mode=IN, jdbcType=VARCHAR}
#{valB, mode=IN, jdbcType=CHAR}
)}
</select>
I na koniec to z mojej klasy DAO:
public static List<MyFooClass>
doGetProgress (String valueA, String valueB) {
SqlSession session = MyBatisConnectionFactory.getInstance().getSqlSessionFactory().openSession();
EsparMapper mapper = session.getMapper(MyMapper.class);
List<MyFooClass> listFoo = mapper.getProgress(valueA, valueB); // line which originates exception below
session.close();
return listFoo;
}
Rezultat:
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect number of arguments for PROCEDURE dbname.MY_FOO_PROC; expected 2, got 1
### The error may involve my.package.names.getProgress-Inline
### The error occurred while setting parameters
będę pamiętać, że próbowałem również:
- tworząc POJO ze zmiennymi Vala i valB i pobierające/ustawiające dla każdego,
- podejmowania
parameterType="PojoClass"
w języku XML, - pomijając
session.getMapper()
i tworząc instancję PojoClass, - i wywołanie
session.selectList("getProgress", pojoInstance);
z prawie identyczne wyniki (tj zła liczba argumentów).
Bardzo mała pomoc w wyszukiwaniu sieciowym, większość z nich mówi mi, żebym zrobił to, co już zrobiłem.
Proste błędy, takie jak ten, są najbardziej frustrujące. Dziękuję i Wesołych Świąt! – cobaltduck