Seis, SQL dinámico MyBatis

1. Significado:
SQL dinámico se refiere a la tecnología de organizar SQL de forma dinámica en función de los datos de los parámetros.

En segundo lugar, el escenario de aplicación de SQL dinámico: por
ejemplo, al buscar en Taobao, puede seleccionar de forma dinámica opciones adicionales como la marca para consultas en tiempo real. En
Inserte la descripción de la imagen aquí
tercer lugar, configuración

  • Método 1:
  • Nota: al configurar el signo menor que, no puede escribir directamente < , debe escribir & lt;
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="goods">
<select id="dynamicSQL" parameterType="java.util.Map" resultType="com.imooc.mybatis.entity.Goods">
    select * from t_goods
    <where>
        <if test="categoryId!=null">
            and category_id = #{categoryId}>
        </if>
        <if test="currentPrice!=null">
            and current_price &lt; #{currentPrice}
        </if>
    </where>
</select>
</mapper>
  • Método 2:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="goods">
 <select id="dynamicSQL" parameterType="java.util.Map" resultType="com.imooc.mybatis.entity.Goods">
        select * from t_goods
        where
        1=1
        <if test="categoryId!=null">
            and category_id = #{categoryId}>
        </if>
        <if test="currentPrice!=null">
            and current_price &lt; #{currentPrice}
        </if>
    </select>
</mapper>

Podemos cambiar los parámetros de configuración a voluntad. Por ejemplo, hemos configurado dos restricciones de consulta en el archivo xml anterior. Al probar, podemos asignar o no valores a estos dos parámetros, lo cual es muy flexible.

 @Test
    public void testDynamic() {
    
    
        SqlSession sqlSession = null;
        try {
    
    
            sqlSession = MyBatisUtils.openSession();
            Map map = new HashMap();
            // map.put("categoryId", 44);
            map.put("currentPrice", 100);
            List<Goods> list = sqlSession.selectList("goods.dynamicSQL", map);
            for (Goods goods:list){
    
    
                System.out.println(goods.getGoodsId()+"-"+goods.getTitle()+"-"+goods.getCurrentPrice());
            }
                sqlSession.commit();
        } catch (Exception e) {
    
    
            sqlSession.rollback();
        } finally {
    
    
            MyBatisUtils.closeSqlSession(sqlSession);
        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_36792120/article/details/112404339
Recomendado
Clasificación