报错:


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);

解决方案二:


  1. 检查配置文件是否正确
  2. 检查SQL语句拼写是否正确
  3. 检查参数是否完整


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>
以下为mybatis 各配置文件官方文档 ,客官,请过目:

​MYTAIS XML配置 ​​​ ​​ XML映射文件​

​动态 SQL​

​Java API​​​ ​​SQL语句构建器类​​​ ​​日志​