• MyBatis #{} 和 ${} 引用值的用法


    1.#{} 引用值的用法

    UserMapper配置文件:

        <select id="queryOne" resultType="cn.tedu.mybatis.beans.User">
            select * from user where id = #{id}
        </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);
        }

      /** * #{} 用法 */ @Test public void test05(){ 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(); }

    2.${} 引用值的用法

    在UserMapper.xml中配置:

    在此处通过${xxx}的语法用来引用属性

        <!-- ${} 的用法 -->
        <select id="queryAllOrder" resultType="cn.tedu.mybatis.beans.User">
            select * from user order by ${cname}
        </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);
        }
        
        /**
         * ${} 的用法
         */
        @Test
        public void test06(){
            // 1.通过map,准备参数
            Map<String,String> map = new HashMap<String,String>();
            map.put("cname", "age");
            // 2.创建sqlSession
            SqlSession session = factory.openSession();
            // 3.执行操作
            List<User> list = session.selectList("cn.tedu.mybatis.beans.UserMapper.queryAllOrder",map);
            // 4.遍历结果
            System.out.println(Arrays.toString(list.toArray()));
        }

    3. #{} 和 ${} 区别

    #{} 在引用时,如果发现目标是一个字符串,则会将其值作为一个字符串拼接在sql上

    ${} 在引用时,即使发现目标是一个字符串,也不会作为字符串而是直接使用将其拼接到sql上

    所以,通常情况下,使用#{}

    而如果需要引用的是一个列名,使用${}

     

  • 相关阅读:
    Linux线程(一)
    模板(一)
    C++基础(八)
    C++基础(七)
    C++基础(六)
    C++基础(五)
    2.C#基础(二)
    1.C#基础(一)
    2.给出距离1900年1月1日的天数,求日期
    网络协议破解 SMTP
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9857468.html
Copyright © 2020-2023  润新知