MyBatis 值的传递

1.值的传递 - Map传值

能够经过对象获取Map传递值,在配置文件中经过 #{} 或 ${} 进行应用sql

查询30-40岁的用户session

    <!-- 值的传递 - Map传值 -->
    <select id="queryRange" resultType="cn.tedu.mybatis.beans.User">
        select * from user where age between #{min} and #{max};
    </select>

测试类mybatis

// 根据配置文件建立sqlSessionFactory
    private SqlSessionFactory factory = null;
    @Before
    public void before() throws Exception{
        //1.读取MyBatis核心配置文件
        InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
        //2.根据配置文件建立sqlSessionFactory
        factory = new SqlSessionFactoryBuilder().build(in);
    }
    
    /**
     * Map传值
     */
    @Test
    public void test02(){
        // 1.经过map,准备参数
        Map<String,Integer> map = new HashMap<String,Integer>();
        map.put("min", 20);
        map.put("max", 40);
        // 2.建立sqlSession
        SqlSession session = factory.openSession();
        // 3.执行操做
        List<User> list = session.selectList("cn.tedu.mybatis.beans.UserMapper.queryRange",map);
        // 4.遍历结果
        System.out.println(Arrays.toString(list.toArray()));
    }

2.值的传递 - 对象传值

能够经过对象获取Map传递至,在配置文件中经过#{}  和 ${} 进行应用app

在UserMapper.xml中配置测试

    <!-- 值的传递 - 对象传值 -->
    <select id="insertUser">
        insert into user values (null,#{name},${age})
    </select>

** 此处经过#{xxx}的语法来引用属性ui

测试类:spa

    // 根据配置文件建立sqlSessionFactory
    private SqlSessionFactory factory = null;
    @Before
    public void before() throws Exception{
        //1.读取MyBatis核心配置文件
        InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
        //2.根据配置文件建立sqlSessionFactory
        factory = new SqlSessionFactoryBuilder().build(in);
    }
    
    /**
     * 对象传值
     */
    @Test
    public void test03(){
        User user = new User();
        user.setName("cjj");
        user.setAge(24);
        
        // 1.建立sqlSession
        SqlSession session = factory.openSession();
        // 2.执行操做
        session.insert("cn.tedu.mybatis.beans.UserMapper.insertUser",user);
        // 3.提交事务,mybatis自动开启事务,可是并不会自动提交,须要手动提交事物
        session.commit();
    }

注意:mybatis自动开启事务,可是并不会自动提交,须要手动提交事物code

3.值的传递 - 单值传值

 若是程序中只有一个参数须要传递给sql,则不须要封装到bean或map中,能够直接传入。xml

在sql中能够使用任意名称获取到这个参数,虽然名称能够任意,但一般仍然使用该属性的名称,以便阅读。对象

    <!-- 值的传递 - 单值传值 -->
    <select id="queryOne" resultType="cn.tedu.mybatis.beans.User">
        select * from user where id = #{id}
    </select>

测试类:

    /**
     * 单值传递
     */
    @Test
    public void test04(){
        // 1.建立sqlSession
        SqlSession session = factory.openSession();
        // 2.执行操做
        User user = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryOne",3);
        // 3.遍历结果
        System.out.println(user);
    }
相关文章
相关标签/搜索