报错:
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for FormulaDetailMapper.findByfIdAndmId............
解决方案一:
经测试应该是忘了使用@Param。当只有一个参数时,Mapper中可以不使用
public void insertAdmin(String username);
但是有多个参数时必须用:
public void insertAdmin(@Param("username")String username,@Param("password")String password);
解决方案二:
- 检查配置文件是否正确
- 检查SQL语句拼写是否正确
- 检查参数是否完整
3.1.检查该Mapper文件中的所有方法,查看是否有id重复的方法;
3.2.检查方法中的parameterType和resultType,查看相应的参数类型是否有错误。
解决方案三:
熟读mybatis,正确使用配置节点:
<!-- 通过resultMap映射实体类和表字段的关系 --> <resultMap type="Menu" id="menuResultMap"> <!-- 用id属性来映射主键字段 --> <id column="MENU_ID" property="MENU_ID"/> <!-- 用result属性来映射非主键字段 --> <result column="MENU_NAME" property="MENU_NAME"/> <result column="PARENT_ID" property="PARENT_ID"/> <result column="MENU_ORDER" property="MENU_ORDER"/> </resultMap> <!--表名 --> <sql id="tableName"> SYS_MENU </sql> <!-- 字段 --> <sql id="Field"> MENU_ID, MENU_NAME, PARENT_ID, MENU_ORDER, </sql> <!-- 字段值 --> <sql id="FieldValue"> #{MENU_ID}, #{MENU_NAME}, #{PARENT_ID}, #{MENU_ORDER} </sql> <!--新增 --> <insert id="insertMenu" parameterType="Menu"> insert into <include refid="tableName"></include> ( <include refid="Field"></include> ) values ( <include refid="FieldValue"></include> ) </insert> <!--删除菜单--> <delete id="deleteMenuById" parameterType="String"> delete from <include refid="tableName"></include> where MENU_ID=#{MENU_ID} </delete> <!--编辑 --> <update id="updateMenu" parameterType="Menu"> update <include refid="tableName"></include> set MENU_NAME =#{MENU_NAME}, MENU_URL =#{MENU_URL} , MENU_ORDER=#{MENU_ORDER}, MENU_STATE=#{MENU_STATE}, MENU_TYPE =#{MENU_TYPE} where MENU_ID=#{MENU_ID} </update> <!--通过菜单ID获取数据 --> <select id="getMenuById" parameterType="pd" resultType="pd"> select <include refid="Field"></include> from <include refid="tableName"></include> where MENU_ID=#{MENU_ID} </select>