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>
测试也是正确
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?