007.SQL传参(动态传入参数)

1.形式

 

 

 

2.  单参数传递,使用parameterType指定参数的数据类型即可,SQL中#{value}提取参数parameterType="Integer"

2.1 goods.xml

 <!-- 单参数传递,使用parameterType指定参数的数据类型即可,SQL中#{value}提取参数-->
    <select id="selectById" parameterType="Integer" resultType="com.imooc.mybatis.entity.Goods">
        select * from t_goods where  goods_id = #{value}
    </select>

2.2 测试语句

 /**
     * 传递单个SQL参数
     *
     * @throws Exception
     */
    @Test
    public void testSelectById() throws Exception
    {
        SqlSession session = null;
        try
        {
            session = MyBatisUtils.openSession();
            Goods goods = session.selectOne("goods.selectById", 1609);//1603代表传入的参数
            System.out.println(goods.getTitle());
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            MyBatisUtils.closeSession(session);
        }
    }

 

3.多参数传递时,使用parameterType指定Map接口,SQL中#{key}提取参数 ,查询价格的范围parameterType="java.util.Map"

3.1 goods.xml

<!-- 多参数传递时,使用parameterType指定Map接口,SQL中#{key}提取参数 -->
    <select id="selectByPriceRange" parameterType="java.util.Map" resultType="com.imooc.mybatis.entity.Goods">
        select * from t_goods
        where
            current_price between  #{min} and #{max}
        order by current_price
        limit 0,#{limt}
    </select>

3.2 测试语句

   /**
     * 传递多个SQL参数
     *
     * @throws Exception
     */
    @Test
    public void testSelectByPriceRange() throws Exception
    {
        SqlSession session = null;
        try
        {
            session = MyBatisUtils.openSession();
            Map param = new HashMap();
            param.put("min", 100);
            param.put("max", 500);
            param.put("limt", 10);
            List<Goods> list = session.selectList("goods.selectByPriceRange", param);
            for (Goods g : list)
            {
                System.out.println(g.getTitle() + ":" + g.getCurrentPrice());

            }
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            MyBatisUtils.closeSession(session);
        }
    }

 

posted @ 2022-11-23 23:52  李林林  阅读(1460)  评论(0编辑  收藏  举报