一切顺势而行 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 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 关于#python#的问题:自动化测试