继续介绍与<select>标签有关的几个标签的使用,下面就是与查询条件有关的了,做查询操作,没有查询条件,就不是真正的查询。
这里先假设有个POJO类叫User,有一张表t_user
ClassUser{ privateLongid; privateStringname; privateIntegerage; //get set}
CREATETABLE `t_user` ( `id` int(11)NOTNULL AUTO_INCREMENT, `name` varchar(30)NULL DEFAULT NULL, `age` int(11)NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE )
带条件的查询一个列表或者一条记录可以使用下面的方式实现
<selectid="getList"parameterType="package.User"resultType="package.User"> SELECT t.ID,t.name,t.age FROM t_user t <where> 1=1 <iftest="name!= null and name != ''"> AND t.name like '%${name}%' </if><choose><whentest='age != null and age != 0'> AND t.age = #{age } </when><otherwise> AND t.age is null </otherwise></choose></where></select>
这里只是举个例子说明<if>, <choose>, <when>, <otherwise>这几个标签的用法,<if>, <choose>, <when>, <otherwise>用于在XML中实现条件判断和动态SQL语句的构建。
<if> 标签用于在 SQL 查询中包含条件语句片段。通过在 <if> 标签中指定条件表达式,如果该表达式为真(非空或非零),则会包含 <if> 标签中定义的 SQL 语句。如果表达式为假(空或零),则 <if> 标签中定义的 SQL 语句不会包含在最终的 SQL 查询中。
<choose> 标签用于在多个条件中选择一个成立的语句片段,类似于 Java 中的 switch 语句。它可以包含多个 <when> 标签和一个可选的 <otherwise> 标签。当 <choose> 遇到第一个满足条件的 <when> 标签时,它将包含该 <when> 标签中定义的 SQL 语句,并且忽略后续的 <when> 标签和 <otherwise> 标签。