1.一对多的查询
2.多对一的查询
3.mybatis if
<select id="getProducts" resultType="Product">
select * from product
<where>
<if test="name != null">
and name like #{name}
</if>
<if test="price != null">
and price > #{price}
</if>
</where>
</select>
在这个例子中,if标签用于判断查询条件是否存在,如果存在则将条件添加到SQL语句中。具体来说:
- if标签的test属性用于指定条件判断表达式,如果表达式的值为true,则执行if标签中的内容,否则忽略if标签。
- 在if标签中可以添加任意的SQL语句,这些语句会根据条件判断动态生成SQL语句。
- 在这个例子中,if标签用于判断查询条件是否存在,如果存在则添加相应的查询条件。例如,如果name参数不为空,则添加一个name like查询条件;如果price参数不为空,则添加一个price >查询条件。
使用if标签可以实现更加灵活的查询,可以根据不同的查询条件动态生成SQL语句,从而实现更加精确的查询。
4.
where标签用于将所有的查询条件组合起来,并添加到SQL语句中。具体来说:
- where标签会在所有的查询条件前添加一个"where"关键字,从而组合所有的查询条件。
- 在where标签中可以添加任意的SQL语句,这些语句会根据条件判断动态生成SQL语句。
- 在这个例子中,where标签用于将所有的查询条件组合起来,并添加到SQL语句中。例如,如果name参数不为空,则添加一个name like查询条件;如果price参数不为空,则添加一个price >查询条件。
set标签用于将所有的更新列和值组合起来,并添加到SQL语句中。具体来说:
- set标签会在所有的更新列和值前添加一个"set"关键字,从而组合所有的更新操作。
- 在set标签中可以添加任意的SQL语句,这些语句会根据条件判断动态生成SQL语句。
- 在这个例子中,set标签用于将所有的更新列和值组合起来,并添加到SQL语句中。例如,如果name参数不为空,则添加一个name = #{name}的更新操作;如果price参数不为空,则添加一个price = #{price}的更新操作。5.
5.mybatis if else
MyBatis中的if和choose标签可以用于在SQL语句中添加条件判断,if标签用于单一条件判断,而choose标签则可以实现多个条件的判断,并根据条件动态生成SQL语句。
choose标签中可以包含多个when和otherwise标签,每个when标签都可以包含一个条件判断和相应的SQL语句,otherwise标签则表示所有条件都不满足时执行的SQL语句。
6.MYBATIS FOREACH
7.
<select id="getProducts" resultType="Product">
<bind name="likeName" value="'%' + name + '%'"/>
select * from product
where name like #{likeName}
</select>
在这个例子中,bind标签用于定义一个变量likeName,并将其值设置为"%"+name+"%",从而实现模糊查询。具体来说:
- bind标签的name属性用于指定变量名,value属性用于指定变量的值。
- 在SQL语句中可以使用#{}占位符引用变量,从而将变量作为参数传递给SQL语句。
- 在这个例子中,bind标签用于定义一个变量likeName,并将其值设置为"%"+name+"%",然后将变量作为参数传递给SQL语句中的like查询条件。