美文网首页
MyBaits——SQL映射文件中'#{}'与'${}'的区别

MyBaits——SQL映射文件中'#{}'与'${}'的区别

作者: 青春代言人 | 来源:发表于2019-02-26 14:54 被阅读0次

    #{}、${}

    #{参数}:占位符;

    参数类型:

    1)、可以接受任意的基本数据类型;

    注、当参数为基本数据数据类型时,占位符中的属性名可以随意写,但是建议为见明知意;

    2)、可以接收pojo中的属性值;

    注、当参数为pojo中的变量时,占位符中的属性名为pojo中所对应的变量名;

    3)、可以通过HashMap设置;

    注、当参数为pojo中的变量时,占位符中的属性名为集合中的键名;

    ${参数}:拼接符;

    1)、可以接受任意的基本数据类型;

    注、当参数为基本数据数据类型时,占位符中的属性名为value;

    2)、可以接收pojo中的属性值;

    注、当参数为pojo中的变量时,占位符中的属性名为pojo中所对应的变量名;

    3)、可以通过HashMap设置;

    注、当参数为pojo中的变量时,占位符中的属性名为集合中的键名;

    ${}、#{}区别:

    执行sql的方式:

    #{}:预编译sql,相当于PreparedStatement;

    ${}:不会进行预编译,相当于Statement;

    安全性:

    #{}:安全性高,不会发生sql注入;

    ${}:安全性不高,可能发生sql注入;

    效率:

    #{}:效率相对高;

    ${}:效率相对低;

    数据类型:

    #{}:不需要考虑数据类型(数据库类型与java类型之间)是否相同,MyBatis会自动转换数据类型;

    ${}:需要考虑数据类型;

    参数:

    当参数为基本数据类型时,占位符中可以使用任意变量接收,拼接符只能通过value变量接受;

    相关文章

      网友评论

          本文标题:MyBaits——SQL映射文件中'#{}'与'${}'的区别

          本文链接:https://www.haomeiwen.com/subject/ylvayqtx.html