• MyBatis 值的传递


    1.值的传递 - Map传值

    可以通过对象获取Map传递值,在配置文件中通过 #{} 或 ${} 进行应用

    查询30-40岁的用户

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

    测试类

    // 根据配置文件创建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传递至,在配置文件中通过#{}  和 ${} 进行应用

    在UserMapper.xml中配置

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

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

    测试类:

        // 根据配置文件创建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自动开启事务,但是并不会自动提交,需要手动提交事物

    3.值的传递 - 单值传值

     如果程序中只有一个参数需要传递给sql,则不需要封装到bean或map中,可以直接传入。

    在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);
        }
  • 相关阅读:
    SQL Server 2005 出现“此数据库没有有效所有者”错误的解决方法
    使用swfupload出现SecurityError Error #2156问题
    读取Excel表
    POJ 1953 (DP)
    POJ 1050 (DP)
    POJ 1276 (DP)
    POJ 1579 (DP)
    HDOJ 4223 (DP)
    POJ 1080 (DP)
    POJ 1458 (DP)
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9855059.html
Copyright © 2020-2023  润新知