Java中mybatis的动态SQL

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

动态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>

测试也是正确

posted @   昊月光华  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示