where和if标签搭配
user表如下图所示
有时候,我们想在java程序中自定义查询条件,例如,我想查询user表,有时候我输入name=“狂神”,查询所有name为狂神的数据,有时候我输入pwd=‘123456’,想查询所有密码为123456的数据,有时候我想查询name为狂神同时密码为123456的数据,总之,我输入的查询条件是非常灵活的,数量也不确定,这种情况,需要使用动态sql进行查询
首先定义查询接口,如图所示,map中可以根据需要传入键值对,例如map可以是{"name": “狂神”},也可以是{"pwd": “123456”},也可以是{"name": “狂神”, "pwd": “123456”}
相应的映射文件如下,where标签的作用是,如果标签内没有任何语句,则不产生where语句,如果标签内有语句,且句首是and,则去掉and关键字,并在语句前加上where关键字。
if关键字判断相应的键是否存在,若存在则生成相应语句
测试代码及返回结果如下
别忘了set和trim标签哦
接口和对应的映射文件如下,set标签的作用是,当标签内没有任何语句生成时,则不产生set语句,如果语句内有返回的语句,则去掉语句末尾的逗号,并且在句首加上set关键字。
测试代码和结果如下
至于trim标签的话,长下图这个鬼样子,where标签和set标签都可以看作是trim标签的特例,通过对trim标签中参数prefix, prefixOverrrides,suffix, suffixOverrides进行设置,来告诉标签,需要在语句中去掉哪些前后缀,并且加上哪些前后缀,由于自定义trim标签用的比较少,这里就不举例说明了,会用where和set就行了
foreach标签
直接上接口和映射文件
测试代码和结果如下
标签:语句,set,name,标签,查询,Mybatis,动态,where From: https://www.cnblogs.com/loubin/p/18700199