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

#{}、${}

#{参数}:占位符;

参数类型:

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变量接受;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容