Mybatis中值傳遞的三種方式

1.前言

本案例中,所用的的數據表,bean,Mybatis數據庫配置,可以參考:https://blog.csdn.net/qq_32224047/article/details/107165157

2.值的傳遞 - Map傳值

可以通過對象 獲取 Map傳遞值,在配置文件中通過 #{} 或 ${}進行應用
userMapper.xml中的配置

<?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="cn.tedu.mapper.UserMapper">

    <select id="selc01" resultType="cn.tedu.domain.User">
        select * from user where age between #{min} and #{max};
    </select>

</mapper>

測試類

    @Test
    public void test01() throws Exception {
        //3.執行sql
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("min",20);
        map.put("max",30);
        List<User> list = session.selectList("cn.tedu.mapper.UserMapper.selc01",map);
        System.out.println(list);
    }

測試結果:

3. 值的傳遞 - 對象傳值

可以通過對象 獲取 Map傳遞值,在配置文件中通過 #{} 或 ${}進行應用

在UserMapper.xml中配置:

    <insert id="inset01">
        insert into user values (#{id},#{name},#{age});
    </insert>

測試類 ,事務未設置自動提交,所以需要手動提交

    @Test
    public void test02(){
        User user = new User(9,"xx",99);
        //3.執行sql
        session.insert("cn.tedu.mapper.UserMapper.inset01",user);
        session.commit();
    }

測試結果

數據插入成功

 

4.值的傳遞 - 單值傳

如果程序中只有一個參數需要傳遞給sql,則不需要封裝到bean或map中,可以直接傳 入。在sql中可以使用任意名稱獲取到這個參數,雖然名稱可以任意,但通常仍然使用該 屬性的名稱,以便於閱讀。

(如果只傳遞一個值,用map或者bean 那麼比較浪費,如果在沒有歧義(有歧義的情況,換成Map就行)等問題的情況下采用單值傳遞,單值傳遞--mybatis將傳遞的字符串參數當做一個bean傳遞)

    <select id="selc02" resultType="cn.tedu.domain.User">
        select * from user where id = #{id};
    </select>

測試類;

    @Test
    public void test03(){
        //3.執行sql
        User user = session.selectOne("cn.tedu.mapper.UserMapper.selc02",2);
        System.out.println(user);
    }

測試結果如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章