zoukankan      html  css  js  c++  java
  • MyBtis之关于#{}和${}

    1.${}的用法的mapper文件配置:

    </select>
        <select id="selById2" resultType="com.susu.pojo.People" parameterType="com.susu.pojo.People">
      select * from people where id = ${id}
      </select>
    

    测试的java代码:

    People people = new People();
    people.setId(1);
    People one = session.selectOne("com.susu.mapper.PeopleMapper.selById2", people);
    System.out.println(one);
    

    运行效果:

    可以看到,合成的sql是: select * form people where id = 1

    2.#{}用法的mapper文件配置:

    </select>
        <select id="selById2" resultType="com.susu.pojo.People" parameterType="com.susu.pojo.People">
      select * from people where id = #{id}
      </select>
    

    运行效果:

    总结#{}和${}的区别

    1. 无论是#{}还是${},都会根据括号中的内容id,去参数com.susu.pojo.People去找相应的get方法,从而从参数对象获取相应的值,来赋值给sql的id字段
    2. 不同点在于,${}的底层实现是 字符串拼接合成sql 的方式;而#{}的底层实现则是使用 占位符 的方式,
    3. #{}获取参数的内容支持 索引 获取,比如#{0}。也可以使用 param1方式 获取指定位置参数,并且sql语句使用?占位符处理
    4. ${}使用字符串拼接方式,不使用?占位符,默认找${内容}的get/set方法,如果大括号中写的是数字,则取到的数值就是该数字。
    5. 如果在xml文件中出现”<”, “>”,双引号等特殊字符时,可以使用XML文件转义符(XML自身的转义标签)

    注: ${}很少用,几乎不用!

  • 相关阅读:
    Java Mockito 笔记
    J2EE 练习题
    CXF 教程 (二)
    CXF 教程(一)
    Java 动态代理
    常用 Git 命令汇总
    JXL 简单示例
    Visual Studio 技巧
    TreeView双击节点而不改变节点的折叠/展开状态
    称3次,找出坏鸡蛋
  • 原文地址:https://www.cnblogs.com/suhaha/p/11794128.html
Copyright © 2011-2022 走看看