ceacer 2 已发布 1月29号 分享 已发布 1月29号 在mybatis中#和$的主要区别是:#传入的参数在SQL中显示为字符串,#方式能够很大程度防止sql注入;$传入的参数在SqL中直接显示为传入的值,$方式无法防止Sql注入。 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。 动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${};两者都是动态的向sql语句中传入需要的参数。 mybatis中#和$的区别是什么 1、传入的参数在SQL中显示不同 #传入的参数在SQL中显示为字符串(当成一个字符串),会对自动传入的数据加一个双引号。 例:使用以下SQL select id,name,age from student where id =#{id} 当我们传递的参数id为 “1” 时,上述 sql 的解析为: select id,name,age from student where id =”1″ $传入的参数在SqL中直接显示为传入的值 例:使用以下SQL select id,name,age from student where id =${id} 当我们传递的参数id为 “1” 时,上述 sql 的解析为: select id,name,age from student where id =1 2、#可以防止SQL注入的风险(语句的拼接);但$无法防止Sql注入。 3、$方式一般用于传入数据库对象,例如传入表名。 4、大多数情况下还是经常使用#,一般能用#的就别用$;但有些情况下必须使用$,例:MyBatis排序时使用order by 动态参数时需要注意,用$而不是# 以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以持续关注!!!为大家带来更多更优秀的学习资源。有其他建议和意见欢迎评论区探讨交流。 评论链接 在其他网站上分享 更多分享选项...
推荐帖
创建账户或登录以发表评论
您需要成为会员才能发表评论
创建一个帐户
在我们的社区注册一个新账户。很简单!
注册新账户登入
已有账户?在此登录
立即登录