MyBatis——动态SQL语句——if标签和where标签复合使用 程序员文章站 2022-07-23 11:32:49 功能需求根据性别和名字查询用户官方文档MyBatis——动态 SQLSQL语句SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND username LIKE '%张%'Mapper.xml文件配置 功能需求 根据性别和名字查询用户 官方文档 MyBatis——动态 SQL SQL语句 SELECT id, username, birthday, sex, address FROM `user` WHERE sex = 1 AND username LIKE '%张%' Mapper.xml文件配置 <!-- 根据条件查询用户 --> <select id="queryUserByWhere" parameterType="user" resultType="user"> SELECT id, username, birthday, sex, address FROM `user` WHERE sex = #{sex} AND username LIKE '%${username}%' </select> 改进1: 1=1 绝对成立 <!-- 根据条件查询用户 --> <select id="queryUserByWhere" parameterType="user" resultType="user"> SELECT id, username, birthday, sex, address FROM `user` WHERE 1=1 <if test="sex != null and sex != ''"> AND sex = #{sex} </if> <if test="username != null and username != ''"> AND username LIKE '%${username}%' </if> </select> 改进2: where标签可以自动添加where,同时处理sql语句中第一个and关键字 <!-- 根据条件查询用户 --> <select id="queryUserByWhere" parameterType="user" resultType="user"> SELECT id, username, birthday, sex, address FROM `user` <!-- where标签可以自动添加where,同时处理sql语句中第一个and关键字 --> <where> <if test="sex != null"> AND sex = #{sex} </if> <if test="username != null and username != ''"> AND username LIKE '%${username}%' </if> </where> </select> where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。 如果 where 元素与你期望的不太一样,你也可以通过自定义 trim 元素来定制 where 元素的功能。比如,和 where 元素等价的自定义 trim 元素为: <trim prefix="WHERE" prefixOverrides="AND |OR "> ... </trim> 参考文章 Mybatis 动态sql语句(if标签和where标签) **mybatis处理SQL查询中的where后面and常用的2种方法** Mybatis where 1=1 和 标签 本文地址:https://blog.csdn.net/weixin_43272781/article/details/107664572 相关标签: # JAVA # SQL 上一篇: How to manage MySQL 8.0 server based on docker 下一篇: 理智消费不跟风 大品牌二当家手机盘点 推荐阅读 MyBatis——动态SQL语句——if标签和where标签复合使用 MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法 Mybatis 动态sql语句if标签和where标签结合巧妙使用 MyBatis——动态SQL语句——if标签和where标签复合使用 MyBatis从入门到精通(七):MyBatis动态Sql之choose,where,set标签的用法 mybatis <where>、<set>、<trim>、<sql>、<foreach>标签的使用