MyBatis动态SQL

动态SQL是根据参数数据动态组织SQL的技术

Mapper XML:

    <select id="dynamicSQL" parameterType="java.util.Map" resultType="com.MyBatis.entity.Goods">
        select * from t_goods
        <!--where会对子SQL进行判断,确保符合SQL语法-->
        <where>
            <if test="categoryId != null">
                and category_id = #{categoryId}
            </if>
            <if test="currentPrice != null">
                and current_price &lt; #{currentPrice}
            </if>
        </where>
    </select>

测试方法:

@Test
    public void testDynamicSQL(){
        SqlSession sqlSession=null;
        try{
            sqlSession=MyBatisUtils.openSession();
            Map param = new HashMap();
            param.put("categoryId",44);
            param.put("currentPrice",500);
            List<Goods> list = sqlSession.selectList("goods.dynamicSQL", param);
            for(Goods g: list){
                System.out.println(g.getTitle()+":"+g.getCategoryId()+":"+g.getCurrentPrice());
            }
        }catch (Exception e){
            if(sqlSession!=null){
                sqlSession.rollback();
            }
            throw e;
        }finally {
            MyBatisUtils.closeSession(sqlSession);
        }
    }

 

posted @ 2022-04-18 19:13  南风知君  阅读(74)  评论(0)    收藏  举报