<choose> <when test="name !=null and name !=''"> and name like concat('%',#{name}, '%') </when> <when test="major !=null and major !=''"> and major= #{major} </when> <otherwise> and sno is not null </otherwise> </choose> 把上述代码改为where if的动态代码。
时间: 2024-02-14 20:32:21 浏览: 142
你好!根据你的要求,将上述代码改为使用IF语句的动态代码如下:
```java
WHERE
1 = 1
<if test="name !=null and name !=''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
<if test="major !=null and major !=''">
AND major = #{major}
</if>
<if test="name == null and major == null">
AND sno IS NOT NULL
</if>
```
在这个改进后的代码中,使用了`<if>`标签来处理不同的条件。如果`name`不为空,则拼接`name`的模糊查询条件;如果`major`不为空,则添加`major`的等于条件;如果`name`和`major`都为空,则添加`sno`不为空的条件。
希望这个答案能够帮助到你!如果还有其他问题,请随时提问。
相关问题
请把下面的查询代码转换成 使用where if 的动态SQL命令代码,从而实现完成相同的查询功能。 <select id="findStudentByNameAndMajor" parameterType="com.itheima.pojo.Student" resultType="com.itheima.pojo.Student"> select * from dm_student where 1=1 <choose> <when test="name !=null and name !=''"> and name like concat('%',#{name}, '%') </when> <when test="major !=null and major !=''"> and major= #{major} </when> <otherwise> and sno is not null </otherwise> </choose> </select> 把上面的红色代码 转换成使用 where if的动态代码。
使用where if的动态SQL命令代码实现相同的查询功能:
```xml
<select id="findStudentByNameAndMajor" parameterType="com.itheima.pojo.Student" resultType="com.itheima.pojo.Student">
SELECT * FROM dm_student
WHERE 1=1
<if test="name != null and name != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
<if test="major != null and major != ''">
AND major = #{major}
</if>
<if test="name == null and major == null">
AND sno IS NOT NULL
</if>
</select>
```
上述代码将红色部分的choose、when和otherwise标签替换为了if标签,并使用了动态SQL的方式来拼接查询条件。其中,当name和major都为空时,查询条件为sno IS NOT NULL。否则,根据name和major的值来进行模糊查询和精确查询。
阅读全文