Mybatis:关于动态生成sql语句的一些问题

(1)

<select id="selectClassByID" resultMap="ClassesResultMap" parameterType="int">
    select cid,cname,sid,sname from class left join student on cid=s_cid 
    <trim prefix="where" prefixOverrides="and|or">
        <if test="id != null">and cid=#{id}</if>
    </trim>
</select>

报错:无法找到id这个参数
解决办法:1、传入map,键为id,即可找到id;
2、在接口的方法加入注解 public Classes selectClassByID(@Param(“id”) int cid)
此处”id”是sql语句的id这个参数

(2)trim (对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)

<trim prefix="where" prefixOverrides="and|or"></trim>   

解释:在trim中,若开头是“and|or”,则用”where”替换”and|or”

<trim prefix="(" suffix=")" suffixOverrides=","></trim>`

解释:在trim中,若结尾是“,”,则用”)”替换”,”
(3)
foreach(在实现 mybatis in 语句查询时特别有用)
open:foreach代码的开始符号
close:foreach代码的关闭符号
separator:元素之间的分隔符
index:下标
item:循环体中的具体对象
1、传入参数为数组(集合)类型

<foreach item="item_para" collection="array(list)" index="index" open="" separator="" close="">#{item_para}</foreach>

2、传入参数为map类型,键为“usertds”,值为一个集合,所以collection为”userids” item为userids中的值

map.put("userids",list);
<foreach item="item_para" collection="userids" index="index" open="" separator="" close="">#{item_para}</foreach>

collection里只能放三种,1、array;2、list;3、自定义的Map里的键
当collection里是数组或者集合(若Map里放的也是数组或集合,同样的做法),index是下标数字;
当collection里是Map(即自定义的Map里存放的还是Map),index是collection里Map的键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值