天天看點

011.Mybatis中SQL傳參

1.在good.xml中編輯sql語句(單參數)

<!-- 單參數傳遞,使用parameterType指定參數的資料類型即可,SQL中#{value}提取參數-->
<select id="selectById" parameterType="Integer" resultType="com.imooc.mybatis.entity.Goods">
    select *
    from t_goods
    where goods_id = #{value}
</select>      

1.1在MybatisTest.java中增加測試用例

/**
     * 傳遞單個SQL參數
     *
     * @throws Exception
     */
    @Test
    public void testSelectById() throws Exception
    {
        SqlSession session = null;
        try
        {
            session = MyBatisUtils.openSession();
            Goods goods = session.selectOne("goods.selectById", 1603);//1603代表傳入的參數
            System.out.println(goods.getTitle());
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            MyBatisUtils.closeSession(session);
        }
    }      

2.在good.xml中編輯sql語句(多參數)

<!-- 多參數傳遞時,使用parameterType指定Map接口,SQL中#{key}提取參數   #{limt}代表多少條資料-->
    <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>      

2.1在MybatisTest.java中增加測試用例

/**
     * 傳遞多個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);
        }
    }