一切顺势而行 2019-02-28 07:47 采纳率: 17.6%
浏览 1754
已结题

mybatis 执行带多行sql 查询语句

begin
<foreach collection="items" item="stu">
     select  name,address,city,province from teachers 
        <trim prefix="where" prefixOverrides="and|or">
                    <if test="stu.name!=null">
                             and name =#{stu.name}
                  </if>
                <if test="stu.age!=null">
                            and age =#{stu.age}
                </if>
            <if test="stu.name!=null">
                        and sex =#{stu.sex}
            </if>
        </trim>
</foreach>

这样写的查询sql报无效的关系运算符,之后我想到的存储过程

Dao 接口
  List<Teacher> queryTeacher(@Param("map")Map<String,Lis<Teacher> map)

查询sql
{
        call(#{map.import_params,jdbcType=CURSOR,mode=IN},
                #{map.out_params,mode=OUT,javaType=ResultSet,resultMap="baseMap"})
}

调用
Map<String,Teacher> m = new HashMap<String,List<Teacher>);
m.put("import_params,list);
m.put("outparam,null);
teacherDao.queryTeacher(m);

这样查询报错说我的 there is no type handler for com.test.QueryTeacher.importParam,改成 #{import_param} 报错 there is no param import_param
available  is  map       

网上有的人就是这样写的,但是报错,请教各位大神这个如何写, 我将不胜感激。

  • 写回答

6条回答

  • zoyation 2019-02-28 09:09
    关注

    1.少了and
    2.且需要写成多个查询关联结果作为子查询方式,最外只能有一个select
    3.foreach的collection="items"里面的items什么意思?弄清楚foreach的用法,如果是list<对象>参数collection="List", name =#{items.name}
    比如这样:
    select t.* from(

    select * from teachers


    name =#{items.name}


    and age =#{items.age}


    and sex =#{items.sex}



    ) t

    评论

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入