新了学mybatis,请教一个细节的问题.

<select id="getProjectTypesByKeyword" resultType="com.jw.jaf.domain.ProjectType" parameterType="java.lang.String">
SELECT
id,
type_name,
type_order
FROM
project_type
WHERE
1 = 1
<if test="keyword !=null and keyword != ''">
AND type_name like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%')
</if>
</select>


求大神解读,这个if标签中的<if test="keyword !=null and keyword != ''">
AND type_name like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%')
</if>
都是什么含义啊,我怎么看不懂keyword之类的含义.
...全文
136 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一贯可乐 2019-05-07
  • 打赏
  • 举报
回复
这个if标签的意思就是 判断入参keyword这个字段是不是为空, 如果不为空,就在sql下面加一个条件AND type_name like CONCAT('%', keyword的值, '%') ,模糊查询
  • 打赏
  • 举报
回复
了解了,看样子我对Mybatis的理解太肤浅了,只会一些简单的CRUD.哎,不知道怎么办...
十八道胡同 2019-04-30
  • 打赏
  • 举报
回复
<if test="keyword !=null and keyword != ''"> 测试下keyword这个变量,该变量不是空且不是空字符串时执行 下面的语句 AND type_name like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%') </if>
weixin_44556897 2019-04-30
  • 打赏
  • 举报
回复
<if test="keyword !=null and keyword != ''"> 中的keyword 应该是你的getProjectTypesByKeyword()方法的入参,if判断该入参不为null并且不为空则执行<if>中的语句。 入参是指方法:getProjectTypesByKeyword(String keyword )括号里的参数
xcbeyond 2019-04-30
  • 打赏
  • 举报
回复
<if test="keyword !=null and keyword != ''">
AND type_name like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%')
</if>
keyword 就是你传递的某个参数而已,当传递keyword参数值是 AND type_name like CONCAT('%', #{keyword,jdbcType=VARCHAR}, '%') sql片段就会动态添加,这就是mybatis中动态sql处理的一种方式。


50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧