Mybatis中使用占位符#

配置文件xml

一般我们都会使用配置文件,执行sql语句,这样不需要再修改sql语句的时候,再次的进行编译,不过当我们需要向数据库中传入参数的时候,怎么做那?

使用占位符

#{} 这个是表示preparedstatement预编译中的?

模糊查询

怎么做那?就是使用sql的拼接方式${} 因为模糊查询是% 值的% ,如果使用# 的话,那么里面的值,就是字符串了,所以不好的。
MyBatis框架,`#{}`和`${}`都是用来在SQL语句插入变量值的占位符,但它们的使用方式和功能有所不同。 1. `#{}`:这种方式被称为预编译处理,它会将SQL的参数部分用占位符代替,并且MyBatis使用PreparedStatement来预编译SQL语句,然后将参数传入。这种方式可以有效防止SQL注入攻击,因为参数值是在SQL语句执行前就已经预编译好了的。此外,`#{}`还可以对参数进行类型转换和类型处理器的用。例如,如果你有一个名为`id`的参数,你可以这样使用: ```xml <select id="selectUser" resultType="User"> SELECT * FROM users WHERE id = #{id} </select> ``` 2. `${}`:这种方式被称为字符串替换,它会直接将参数值拼接在SQL语句,不会进行预编译处理。这种方式在某些特定的场景下非常有用,比如动态地修改表名或者列名。但是,因为它不进行预编译,所以存在SQL注入的风险。使用时需要格外小心,确保传入的参数是安全的。例如,如果你需要动态地传入一个表名,可以这样使用: ```xml <select id="selectUserFromTable" resultType="User"> SELECT * FROM ${tableName} </select> ``` 在上面的例子,`${tableName}`将会被直接替换为传入的表名参数值,如果表名是可控的,就容易引起SQL注入的风险。 使用这两种占位符时需要根据实际需求选择合适的方式,以保证用的安全性和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值