Reputation: 203
i have many problem with spring e mybatis. This is my spring configuration: i have the same configuration and ComuneMapper.java and ComuneMapper.xml stay in the same folders. but i have however this error Somebody to help meeeee
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:webflow="http://www.springframework.org/schema/webflow-config"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/webflow-config
http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:annotation-config />
<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan
base-package="com.aieap" />
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />
<!-- Configurazione Spring MVC View Resolver -->
<bean
id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property
name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property
name="prefix"
value="/jsp/" />
<property
name="suffix"
value=".jsp" />
</bean>
<!-- Flow Handler Adapter -->
<bean
class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property
name="flowExecutor"
ref="flowExecutor" />
</bean>
<!-- Flow Handler Mapping -->
<bean
class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property
name="flowRegistry"
ref="flowRegistry" />
</bean>
<!-- Flow Executor -->
<webflow:flow-executor
id="flowExecutor" />
<!-- Flow Registry -->
<webflow:flow-registry
id="flowRegistry"
flow-builder-services="flowBuilderServices">
<!-- nonaut -->
<webflow:flow-location
id="home-nonaut"
path="/WEB-INF/flows/nonaut/home-nonaut.xml" />
<webflow:flow-location
id="logout"
path="/WEB-INF/flows/nonaut/logout.xml" />
<!-- aut -->
<webflow:flow-location
id="aut/home-aut"
path="/WEB-INF/flows/aut/home-aut.xml" />
<webflow:flow-location
id="aut/nuova-domanda"
path="/WEB-INF/flows/aut/nuova-domanda.xml" />
<webflow:flow-location
id="aut/invia-domanda"
path="/WEB-INF/flows/aut/invia-domanda.xml" />
<webflow:flow-location
id="aut/nuovo-operatore-rer"
path="/WEB-INF/flows/aut/nuovo-operatore-rer.xml" />
</webflow:flow-registry>
<webflow:flow-builder-services
id="flowBuilderServices"
view-factory-creator="viewFactoryCreator" />
<bean
id="viewFactoryCreator"
class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property
name="viewResolvers">
<list>
<ref
bean="viewResolver" />
</list>
</property>
<property
name="useSpringBeanBinding"
value="true" />
</bean>
<import resource="jdbc-context.xml" />
</beans>
jdbc-context.xm:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<context:property-placeholder
location="/WEB-INF/db.properties" />
<!-- Enable annotation style of managing transactions -->
<tx:annotation-driven
transaction-manager="transactionManager" />
<!-- Declare a datasource that has pooling capabilities -->
<bean
id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close"
p:driverClass="${jdbc.driver}"
p:jdbcUrl="${jdbc.url}"
p:user="${jdbc.username}"
p:password="$jdbc.password}"
p:acquireIncrement="10"
p:idleConnectionTestPeriod="60"
p:maxPoolSize="100"
p:maxStatements="50"
p:minPoolSize="10" />
<!-- Declare a transaction manager -->
<bean
id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource" />
<!-- define the SqlSessionFactory, notice that configLocation is not needed when you use MapperFactoryBean -->
<bean
id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property
name="dataSource"
ref="dataSource" />
<property
name="configLocation"
value="WEB-INF/mybatis/sqlmap-config.xml" />
</bean>
<!-- scan for mappers and will automatically scan the whole classpath for xmls -->
<bean
class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
<property name="basePackage" value="com.aieap.dao.mapper" />
</bean>
</beans>
sqlmap-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- changes from the defaults -->
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
<typeAlias type="com.aieap.model.Comuni" alias="comuni"/>
</typeAliases>
</configuration>
controller:
package com.aieap.web.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.apache.log4j.Logger;
import com.aieap.dao.mapper.ComuniMapper;
import com.aieap.model.Comuni;
import com.aieap.model.OperatoriRer;
@Controller
public class OperatoriRerController {
@Autowired ComuniMapper comuniDao;
private static final Logger logger = Logger.getLogger(OperatoriRerController.class);
@RequestMapping("/aut/nuovo-operatore-rer")
public ModelMap start() {
Comuni comuni = comuniDao.selectByPrimaryKey(new Long(1));
System.out.print(comuni);
OperatoriRer op = new OperatoriRer();
op.setNome("ciccio");
op.setCognome("cappuccio");
ModelMap model = new ModelMap();
model.addAttribute("OperatoriRer",op);
return model;
}
@RequestMapping("/aut/search-comune")
public ModelMap searchcomune() {
List<Comuni> comuniList = new ArrayList <Comuni>() ;
ModelMap model = new ModelMap();
model.addAttribute("ComunuList",comuniList);
return model;
}
}
this is the error:
GRAVE: Servlet.service() for servlet [dispatch] in context with path [/aieap] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.aieap.dao.mapper.ComuniMapper.selectByPrimaryKey] with root cause
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.aieap.dao.mapper.ComuniMapper.selectByPrimaryKey
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:593)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:393)
at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:160)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
at $Proxy9.selectByPrimaryKey(Unknown Source)
at com.aieap.web.controller.OperatoriRerController.start(OperatoriRerController.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
please!!! someone help me I'm hopeless!!!!!!!!!!!!!!!
I had forgotten. this is ComuniMapper.java
package com.aieap.dao.mapper;
import com.aieap.model.Comuni;
import com.aieap.model.ComuniExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface ComuniMapper {
int countByExample(ComuniExample example);
int deleteByExample(ComuniExample example);
int deleteByPrimaryKey(Long idComune);
int insert(Comuni record);
int insertSelective(Comuni record);
List<Comuni> selectByExample(ComuniExample example);
Comuni selectByPrimaryKey(Long idComune);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table comuni
*
* @mbggenerated Tue Jan 08 16:52:16 CET 2013
*/
int updateByExampleSelective(@Param("record") Comuni record, @Param("example") ComuniExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table comuni
*
* @mbggenerated Tue Jan 08 16:52:16 CET 2013
*/
int updateByExample(@Param("record") Comuni record, @Param("example") ComuniExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table comuni
*
* @mbggenerated Tue Jan 08 16:52:16 CET 2013
*/
int updateByPrimaryKeySelective(Comuni record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table comuni
*
* @mbggenerated Tue Jan 08 16:52:16 CET 2013
*/
int updateByPrimaryKey(Comuni record);
}
end this ComuniMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.aieap.dao.mapper.ComuniMapper" >
<resultMap id="BaseResultMap" type="com.aieap.model.Comuni" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
<id column="ID_COMUNE" property="idComune" jdbcType="BIGINT" />
<result column="CODICE_ISTAT" property="codiceIstat" jdbcType="VARCHAR" />
<result column="DESCRIZIONE" property="descrizione" jdbcType="VARCHAR" />
<result column="CAP" property="cap" jdbcType="VARCHAR" />
<result column="CODICE_PROVINCIA" property="codiceProvincia" jdbcType="BIGINT" />
<result column="COMUNE_SIGLA" property="comuneSigla" jdbcType="VARCHAR" />
<result column="COMUNE_CFIS" property="comuneCfis" jdbcType="VARCHAR" />
</resultMap>
<sql id="Example_Where_Clause" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
<where >
<foreach collection="oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Update_By_Example_Where_Clause" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
<where >
<foreach collection="example.oredCriteria" item="criteria" separator="or" >
<if test="criteria.valid" >
<trim prefix="(" suffix=")" prefixOverrides="and" >
<foreach collection="criteria.criteria" item="criterion" >
<choose >
<when test="criterion.noValue" >
and ${criterion.condition}
</when>
<when test="criterion.singleValue" >
and ${criterion.condition} #{criterion.value}
</when>
<when test="criterion.betweenValue" >
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when test="criterion.listValue" >
and ${criterion.condition}
<foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql id="Base_Column_List" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
ID_COMUNE, CODICE_ISTAT, DESCRIZIONE, CAP, CODICE_PROVINCIA, COMUNE_SIGLA, COMUNE_CFIS
</sql>
<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.aieap.model.ComuniExample" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
select
<if test="distinct" >
distinct
</if>
<include refid="Base_Column_List" />
from comuni
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null" >
order by ${orderByClause}
</if>
</select>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
select
<include refid="Base_Column_List" />
from comuni
where ID_COMUNE = #{idComune,jdbcType=BIGINT}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Long" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
delete from comuni
where ID_COMUNE = #{idComune,jdbcType=BIGINT}
</delete>
<delete id="deleteByExample" parameterType="com.aieap.model.ComuniExample" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
delete from comuni
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</delete>
<insert id="insert" parameterType="com.aieap.model.Comuni" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
insert into comuni (ID_COMUNE, CODICE_ISTAT, DESCRIZIONE,
CAP, CODICE_PROVINCIA, COMUNE_SIGLA,
COMUNE_CFIS)
values (#{idComune,jdbcType=BIGINT}, #{codiceIstat,jdbcType=VARCHAR}, #{descrizione,jdbcType=VARCHAR},
#{cap,jdbcType=VARCHAR}, #{codiceProvincia,jdbcType=BIGINT}, #{comuneSigla,jdbcType=VARCHAR},
#{comuneCfis,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.aieap.model.Comuni" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
insert into comuni
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="idComune != null" >
ID_COMUNE,
</if>
<if test="codiceIstat != null" >
CODICE_ISTAT,
</if>
<if test="descrizione != null" >
DESCRIZIONE,
</if>
<if test="cap != null" >
CAP,
</if>
<if test="codiceProvincia != null" >
CODICE_PROVINCIA,
</if>
<if test="comuneSigla != null" >
COMUNE_SIGLA,
</if>
<if test="comuneCfis != null" >
COMUNE_CFIS,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="idComune != null" >
#{idComune,jdbcType=BIGINT},
</if>
<if test="codiceIstat != null" >
#{codiceIstat,jdbcType=VARCHAR},
</if>
<if test="descrizione != null" >
#{descrizione,jdbcType=VARCHAR},
</if>
<if test="cap != null" >
#{cap,jdbcType=VARCHAR},
</if>
<if test="codiceProvincia != null" >
#{codiceProvincia,jdbcType=BIGINT},
</if>
<if test="comuneSigla != null" >
#{comuneSigla,jdbcType=VARCHAR},
</if>
<if test="comuneCfis != null" >
#{comuneCfis,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.aieap.model.ComuniExample" resultType="java.lang.Integer" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
select count(*) from comuni
<if test="_parameter != null" >
<include refid="Example_Where_Clause" />
</if>
</select>
<update id="updateByExampleSelective" parameterType="map" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
update comuni
<set >
<if test="record.idComune != null" >
ID_COMUNE = #{record.idComune,jdbcType=BIGINT},
</if>
<if test="record.codiceIstat != null" >
CODICE_ISTAT = #{record.codiceIstat,jdbcType=VARCHAR},
</if>
<if test="record.descrizione != null" >
DESCRIZIONE = #{record.descrizione,jdbcType=VARCHAR},
</if>
<if test="record.cap != null" >
CAP = #{record.cap,jdbcType=VARCHAR},
</if>
<if test="record.codiceProvincia != null" >
CODICE_PROVINCIA = #{record.codiceProvincia,jdbcType=BIGINT},
</if>
<if test="record.comuneSigla != null" >
COMUNE_SIGLA = #{record.comuneSigla,jdbcType=VARCHAR},
</if>
<if test="record.comuneCfis != null" >
COMUNE_CFIS = #{record.comuneCfis,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByExample" parameterType="map" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
update comuni
set ID_COMUNE = #{record.idComune,jdbcType=BIGINT},
CODICE_ISTAT = #{record.codiceIstat,jdbcType=VARCHAR},
DESCRIZIONE = #{record.descrizione,jdbcType=VARCHAR},
CAP = #{record.cap,jdbcType=VARCHAR},
CODICE_PROVINCIA = #{record.codiceProvincia,jdbcType=BIGINT},
COMUNE_SIGLA = #{record.comuneSigla,jdbcType=VARCHAR},
COMUNE_CFIS = #{record.comuneCfis,jdbcType=VARCHAR}
<if test="_parameter != null" >
<include refid="Update_By_Example_Where_Clause" />
</if>
</update>
<update id="updateByPrimaryKeySelective" parameterType="com.aieap.model.Comuni" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
update comuni
<set >
<if test="codiceIstat != null" >
CODICE_ISTAT = #{codiceIstat,jdbcType=VARCHAR},
</if>
<if test="descrizione != null" >
DESCRIZIONE = #{descrizione,jdbcType=VARCHAR},
</if>
<if test="cap != null" >
CAP = #{cap,jdbcType=VARCHAR},
</if>
<if test="codiceProvincia != null" >
CODICE_PROVINCIA = #{codiceProvincia,jdbcType=BIGINT},
</if>
<if test="comuneSigla != null" >
COMUNE_SIGLA = #{comuneSigla,jdbcType=VARCHAR},
</if>
<if test="comuneCfis != null" >
COMUNE_CFIS = #{comuneCfis,jdbcType=VARCHAR},
</if>
</set>
where ID_COMUNE = #{idComune,jdbcType=BIGINT}
</update>
<update id="updateByPrimaryKey" parameterType="com.aieap.model.Comuni" >
<!--
WARNING - @mbggenerated
This element is automatically generated by MyBatis Generator, do not modify.
This element was generated on Tue Jan 08 16:52:16 CET 2013.
-->
update comuni
set CODICE_ISTAT = #{codiceIstat,jdbcType=VARCHAR},
DESCRIZIONE = #{descrizione,jdbcType=VARCHAR},
CAP = #{cap,jdbcType=VARCHAR},
CODICE_PROVINCIA = #{codiceProvincia,jdbcType=BIGINT},
COMUNE_SIGLA = #{comuneSigla,jdbcType=VARCHAR},
COMUNE_CFIS = #{comuneCfis,jdbcType=VARCHAR}
where ID_COMUNE = #{idComune,jdbcType=BIGINT}
</update>
</mapper>
Upvotes: 18
Views: 93158
Reputation: 51
I read an artical saying another possibility - maven build resources issue
https://www.cnblogs.com/javaxubo/p/16608104.html
Upvotes: 0
Reputation: 2285
you may register your mapper in mybatis-config.xml
file
<configuration>
<properties resource="db.dev.properties">
...
</properties>
<typeHandlers>
<package name="com.project.model.typehandlers"/>
</typeHandlers>
<environments default="development">
...
</environments>
<mappers>
<mapper resource="com/project/model/xml/SomeMapper.xml"/>
// other mapper here
</mappers>
...
</configuration>
Upvotes: 1
Reputation: 19
Check if you have mapped mybatis.config
in the properties file.
add this line in application.properties file.
mybatis.config=classpath:mybatis-config.xml
Upvotes: 0
Reputation: 1952
Hi this problem usually is connected to mapper locations. So try to set the mapperLocation property in your SqlSessionFactory bean:
<property name="mapperLocations"
value="classpath*:pathWhereYouHaveMapper/*Mapper.xml" />
Hope it help!
Upvotes: 15
Reputation: 17345
Adding to the other answers, you also have to
Check for duplicate method names
This error comes in the log at last.
IllegalArgumentException: Mapped Statements collection does not contain value
Ignore the above message and simply move up your logs and look for the first error message in the logs. The first error I got was,
ERROR [main] mapper.MapperFactoryBean (MapperFactoryBean.java:83) - Error while adding the mapper 'interface com.xyz.mappers.UserMapper' to configuration.
java.lang.IllegalArgumentException: Mapped Statements collection already contains value for com.xyz.mappers.UserMapper.getAllUserDetails
The error clearly points out that, the method getAllUserDetails
already exists in the UserMapper
interface(with different number of parameters). Duplicating the method names also throws this error. (The penalty for copy-pasting codes) :P
Upvotes: 2
Reputation: 29
I also encountered this problem. In addition to the possibility of the above answer I try to use this way which solve the problem:
The method name should be same in dao
and mapper.xml
, in my case method name not is same. So you must be sure that they are the same.
Good luck!
Upvotes: 1
Reputation: 2149
I came across this exception too. In my case the mapper xml file was present in a JAR included in the classpath, but somehow it could not be found by the MapperScannerConfigurer. I came to know of this by reading the logs. You should read the logs and check the line of the following format to know whether there are any mappers being found. I had to give the root path to it, after which it found my mapper.
PathMatchingResourcePatternResolver:423 - Resolved location pattern [classpath*:*.xml] to resources [URL [jar:file:/home/user/src/tomcat8/webapps/example/WEB-INF/lib/ExampleDao-1.0.0-SNAPSHOT.jar!/TestMapper.xml]]
Upvotes: 0
Reputation: 179
I had similar problem. Then I found that all requests who has the query mappings defined on that mapper.xml having same error.
May be this is because of improper build of WAR or improper deployment to server. Anyway, I deleted that WAR file and re-deployed again and it worked!
Upvotes: 0
Reputation: 323
Duplicated id
in mapper.xml also throws such exception.
Hope this helps.
Upvotes: 1
Reputation: 2070
In My case what happened is there were was a TYPO in my method name in the mapping xml file. When I have changed the DAO name, I forgot to change in the xml, it may help someone else.
Upvotes: 3
Reputation: 616
There can be several reasons...!
-> SQL Syntax (maybe a single small query has an extra "," at the end of the select)
-> Classpath issues ,cannot resolve jar dependencies
-> Also this can coming due an file encoding issue or illegal xml characters embed in your '*Mapper.xml' file. (so watch out for your editor..!)
most importantly you should use same names for.
Upvotes: 13
Reputation: 4717
This usually means mybatis can't find the mapping you refer to. Perhaps you forgot to add the *Mapper.xml file to mybatis-config.xml (which is a standard config file for MyBatis)
<mappers>
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>
See more in documentation http://mybatis.github.io/mybatis-3/configuration.html#mappers
Upvotes: 11
Reputation: 11
I'm using mybatis the same way as you. Your code looks fine. Even I'm not sure if there is a problem with type mappings. Try two following tips to fix your problem:
change java type to mybtis aliases a) "java.lang.Long" -> "long", b) "com.aieap.model.Comuni" -> "comuni"
try to add alias instead of XML mapping @org.apache.ibatis.type.Alias("comuni") to com.aieap.model.Comuni, remove xml typeAlias, add spring configuration to your org.mybatis.spring.SqlSessionFactoryBean:
Good luck, Martin
Upvotes: 0