mybatis中可以动态的拼接sql吗?

我在做的项目中用mybatis从数据库中查询数据,但是查询条件是可以选择的。
如:select * from table where id>100;
我想把“id>100"这个查询条件变成动态的。以一个string的值拼接上去,
以后使用时就可以动态的改变查询条件了。
("id<100" , "id=100”......)
这样可以实现吗?
求大神协助

6个回答

好像是不能解决我的问题呢

 <if test="id != null">    
        and id  = #{id}    
    </if> 
Java_Leo_F
Java_Leo_F > ; < ; >= ;<= ; ! = 这些符号是不确定的
3 年多之前 回复
Java_Leo_F
Java_Leo_F 如果条件是“>"或则是”<“呢?
3 年多之前 回复
Java_Leo_F
Java_Leo_F 如果条件是“>"或则是”<“呢?
3 年多之前 回复

使用sqlprovider自定义查询sql

Java_Leo_F
Java_Leo_F 大神,能解释一下吗?
3 年多之前 回复

用 $$ 包起来,mybatis就会拼接,比如 想 id>100 了,就在java中 num= ' > 100 ' 在mapper里写,id $num$

NOOBBB
说书人- 不要单引号,就是 id $num$,用$ mybatis 就会像拼接字符串一样拼sql
3 年多之前 回复
Java_Leo_F
Java_Leo_F 这样可以吗?我测试了一下,不行。报错在 '$num$' 附近有语法错误
3 年多之前 回复

是可以的以你的列子来说 select * from table where id>100;
where 部分可以这样设计

select * from table


#{condition}



这里的condition是属性名 实体中必须有 并且提供set get 方法 然后你查的时候在controller层 给实体set Condition("id>100");或者setCondition("name='小明' ");
说的比较乱 希望楼主能看懂
或者用4楼的方法

sasalily
sasalily 省略的是<where><if test="condition != null && condition!='' "> #{conditon} </if> </>where
3 年多之前 回复
sasalily
sasalily MZDD 代码都不见了
3 年多之前 回复
立即提问