Java中mybatis的动态SQL

7 篇文章 0 订阅
4 篇文章 0 订阅

作业场景:当用户在输入框中自由输入(表示用户不会全部输入所有的参数条件)时,通过关键字匹配来查询数据库的信息。

动态SQL:SQL语句会随着用户的输入或外部条件的变化而变化,我们称为动态SQL

解决方法:

@1:通过mybatis自己提供的where标签代替sql语句中的where,若提交的参数为空则自动去掉and。

@2:通过加入诸如1=1的恒等式让所有格式一样

如下参考:

@方法一推荐:

根据姓名 id 一同查询或只根据姓名或id查询有关信息。

(感觉有点像前端进行数据校验合法后再传后端进行数据处理的样子)

   <select id="selectinfo"  resultType="com.itcast.pojo.user">
        select  *
        from  myuser
        <where>
            <if test="id!=null" >
            and id=#{id}
            </if>

            <if test="name!=null">
            and name=#{name}
            </if>
        </where>

    </select>

注意:一定不要出现中文输入法下的字符,不然一片红色的错误。

测试:

              user temp=null;
       temp= userMapper.selectinfo("乐七",null);
        System.out.println(temp.toString());

结果:成功读出数据:

user{id=5, name='乐七', address='null'}

方法二(不经常使用):

加个恒等式1=1 后面再接上if标签

    <select id="selectinfo"  resultType="com.itcast.pojo.user">
        select  *
        from  myuser
         where  1=1
            <if test="id!=null" >
            and id=#{id}
            </if>

            <if test="name!=null">
            and name=#{name}
            </if>

    </select>

测试也是正确

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值