mybatis mapper.xml 写关联查询 运用 resultmap 结果集中 用 association 关联其他表 并且 用 association 的 select 查询值 报错 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map
用mybaits 写一个关联查询 查询商品表关联商品规格表,并查询规格表中的数量、价格等,为了sql重用性,利用 association 节点 查询 结果并赋值报错
商品表的mapper文件为GooodsMapper.xml 规格表的mapper 文件为GoodsSpecificationsMapper.xml
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map
GooodsMapper.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.chengpin.mapper.GoodsMapper">
<insert id="save" parameterType="Goods">
insert into t_goods
(no,category,title,selling_point,cover_picture,unit_price,freight_template,shop_category,
service_commitment,return_commitment,guarantee_service,
provide_invoice,is_shelf,shelf_time,state,purchasing_place,release_time,publisher)
values
(GOODS_SEQUENCE.nextval,#{category},#{title},#{selling_point},#{cover_picture},#{unit_price},
#{freight_template},#{shop_category},#{service_commitment},
#{return_commitment},#{guarantee_service},#{provide_invoice},#{is_shelf},#{shelf_time},#{state},#{purchasing_place},
#{release_time},#{publisher})
<selectKey keyProperty="no" order="AFTER" resultType="java.lang.String">
select GOODS_SEQUENCE.CURRVAL from DUAL
</selectKey>
</insert> <select id="selectGoodsInfoTotalSize" parameterType="Map" resultType="Integer">
select
count(*)
from
T_GOODS
WHERE
category = #{categoryno}
</select> <select id="selectGoodsInfo" parameterType="Map" resultType="Map">
select
goodsno,goodstitle,goodsprice,goodsimgurl
from (
select
g.cover_picture goodsimgurl,
g.no goodsno,
g.title goodstitle,
g.unit_price goodsprice,
rownum num
from T_GOODS g
where g.category = #{categoryno}
and rownum <= #{endPage}
order by
<if test="@com.chengpin.core.util.StringUtils@isNotEmpty(priceUp)">
g.unit_price desc,
</if>
<if test="@com.chengpin.core.util.StringUtils@isNotEmpty(priceDown)">
g.unit_price asc,
</if>
<if test="@com.chengpin.core.util.StringUtils@isNotEmpty(last)">
g.release_time desc,
</if>
g.no desc
)
where
num >= #{startPage}
</select> <!-- 根据用户编号和商品状态查询商品信息 -->
<select id="selectGoodsByState" resultType="Goods">
select * from t_goods where publisher=#{user_no} and state=#{state}
</select>
<select id="selectGoodsDetailsByGoodsNo" parameterType="Map" resultType="Map">
select
g.no "no",
g.selling_point "sellpoint",
g.title "title",
g.unit_price "original_price",
gs.price "present_price",
gs.quantity "quantity",
tgi.content "goodscontent"
from
t_Goods g
left join
T_GOODS_SPECIFICATIONS gs
on g.no = gs.goods_no
left join
T_GOODS_INTRODUCTION tgi
on tgi.goods_no = g.no
where g.no = #{goodsno}
<if test="@com.chengpin.core.util.StringUtils@isNotEmpty(goodscolor)">
and gs.color_value = #{goodscolor}
</if>
and rownum = 1
</select> <select id="selectGoodsInfoAndTotalPriceByUserNoState" resultMap="goodsInfoAndTotalPrice">
select g.no goods_no,g.title,g.release_time,g.shelf_time,g.off_shelf,g.cover_picture
from t_goods g where g.publisher = #{user_no} and g.state=#{state}
group by g.no,g.title,g.release_time,g.shelf_time,g.off_shelf,g.cover_picture
order by g.release_time desc
</select> <resultMap type="Goods" id="goodsInfoAndTotalPrice">
<id property="no" column="no" />
<result property="title" column="title"/>
<result property="release_time" column="release_time"/>
<result property="shelf_time" column="shelf_time"/>
<result property="off_shelf" column="off_shelf"/>
<association property="total" column="goods_no" javaType="Integer"
select="mybatis.mapper.GoodsSpecificationsMapper.selectGoodsTotalByGoodsNo"/>
<association property="lowest_price" column="goods_no" javaType="Double"
select="com.chengpin.mapper.GoodsSpecificationsMapper.selectLowestPrice"/>
</resultMap>
</mapper>
GoodsSpecificationsMapper.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.chengpin.mapper.GoodsSpecificationsMapper">
<!-- 保存商品规格方法 -->
<insert id="save">
insert into t_goods_specifications
(no,goods_no,color_value,size_value,quantity,price)
values
(goods_specifications_sequence.nextval,#{goods_no},
#{specifications.color_value},#{specifications.size_value},#{specifications.quantity},#{specifications.price})
</insert> <!-- 根据商品编号查询商品总数 -->
<select id="selectGoodsTotalByGoodsNo" parameterType="String" resultType="Integer">
select sum(quantity) total from t_goods_specifications where goods_no = #{goods_no}
</select> <!-- 根据商品编号查询商品最低价 -->
<select id="selectLowestPrice" parameterType="String" resultType="Double">
select min(price) from t_goods_specifications where goods_no = #{goods_no}
</select>
</mapper>
最后发现错误来源于此
<association property="total" column="goods_no" javaType="Integer"
select="mybatis.mapper.GoodsSpecificationsMapper.selectGoodsTotalByGoodsNo"/>
原来是我吧select 中 对GoodsSpecificationsMapper.xml 文件的 select 查询调用的 空间写错了
我写的是src 路径 并不是 写的 mapper 的namespace 空间位置 把值改如下 便正确了
<association property="total" column="goods_no" javaType="Integer"
select="com.chengpin.mapper.GoodsSpecificationsMapper.selectGoodsTotalByGoodsNo"/>
mybatis mapper.xml 写关联查询 运用 resultmap 结果集中 用 association 关联其他表 并且 用 association 的 select 查询值 报错 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map的更多相关文章
- 搭建Mybatis 出现 Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mapper.BatchCustomer.findBatchCustomerOneToOne
Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection doe ...
- java - mybatis:java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for
当遇见java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 错误的时候 ...
- java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.bjsxt.mapper.PeopleMapper
报错信息: Type Exception Report Description The server encountered an unexpected condition that prevente ...
- Mybatis 报错 java.lang.IllegalArgumentException: Result Maps collection does not contain value for java.lang.Inte
like ‘%java.lang.IllegalArgumentException: Result Maps collection does not contain value for java.la ...
- mybatis报错: java.lang.IllegalArgumentException invalid comparison: java.util.Date and java.lang.String
原因是在使用<if> 进行条件判断时, 将datetime类型的字段与 ' ' 进行了判断,导致的错误 解决, 只使用 <if test="createTime != n ...
- nested exception is java.lang.RuntimeException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'daoSupport': ...
- Caused by: java.lang.IllegalArgumentException: Parameter Maps collection does not contain value for com.bj186.crm.mapper.UserMapper.Integer
在使用SSM整合myBatis的过程中遇到了这个问题. 问题的原因: 把parameterType错误的写成了parameterMap 解决办法: 将parameterMap修改为parameterT ...
- mybatis异常:Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for。。。。。。
框架环境:ssm 昨天下午技术经理更新了下表结构,多加了一个字段. 之后我根据新的mapper.xml文件写了增删改查的操作.重新启动之后不是这个错就是那个错,一大堆错误,头疼. 像类似于NoSuch ...
- Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.st.mapper.UserMapper.userBaseMap
mybatis出现此异常,可能是因为 ***Mapper.xml 文件中存在重名对象,一不小心重复启动了mybatis的逆向工程. 以为会覆盖掉以前生成的,没想到是新生成的和之前生成的重复了 解决:把 ...
随机推荐
- MVC5 DB FIRST
跟着师父一直在做codefirst的开发,最近有个新需求,就是需要人家的数据库,然后来开发,现在出现问题了.整理如下 目前有个现成的我们之前的codefirst的工程代码,我记得师父说过,根据数据库生 ...
- Nagios工作原理
图解Nagios的工作原理 Nagios的主动模式和被动模式 被动模式:就如同上图所显示的那样,客户端起nrpe进程,服务端通过check_nrpe插件向客户端发送命令,客户端根据服务端的指示来调用相 ...
- AE + GDAL实现影像按标准图幅分割(下)
在上篇实现了遥感影像的切割,本篇讲切割前的准备.主要分为以下几步: (1)将影像的投影坐标转换为地理坐标,以便于之后的图幅划分.AE坐标转换函数如下 private bool Proj2Geo(ISp ...
- 测试一下js是否可用
昨天刚获批通过了js权限,今天写一段小代码测试下是否可用 我用Javascript添加了 <p> <script type="text/javascript" ...
- 1.Java集合总结系列:Java集合概述
一.概述 集合是 Java 中非常重要的 API,在实际应用中非常广泛,在许多面试中也是必考的知识点. Java 所有集合类都位于 java.util 包下,Java 的集合只能保存对象,而无法保存保 ...
- JDBC基础学习(五)—批处理插入数据
一.批处理介绍 当需要成批插入或者更新记录时.可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理.通常情况下比单独提交处理更有效率. JDBC的批量处理语句包括下 ...
- Android 调出和隐藏软键盘
1.弹出软键盘 public static void showSoftInputMode(Context context,View windowToken) { final InputMethodMa ...
- SQL模糊查询条件的四种匹配模式
执行数据库查询时,有完整查询和模糊查询之分. 一般模糊语句格式如下: SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件 其中关于条件,SQL提供了四种匹配模式: 1.% :表示任意 ...
- Python中字符串拼接的三种方式
在Python中,我们经常会遇到字符串的拼接问题,在这里我总结了三种字符串的拼接方式: 1.使用加号(+)号进行拼接 加号(+)号拼接是我第一次学习Python常用的方法,我们只需要把我们要加 ...
- C#变量、常量、枚举、预处理器指令知多少
一.变量 C#共有其中变量类型有:静态变量.实类变量.数组元素.数值参数.引用参数.输出参数和局部变量 先定义一个简单的类来说明,如下: public class VariableDefine { p ...