1.一对多的查询

sqlalchemy where 动态条件_数据库

2.多对一的查询

sqlalchemy where 动态条件_SQL_02

 

3.mybatis if

sqlalchemy where 动态条件_sql_03

 

 

<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.

sqlalchemy where 动态条件_条件判断_04

 

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

sqlalchemy where 动态条件_数据库_05

 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查询条件。