From 6dfc8b1f9f5290de02cc35ece9a520f8f4821357 Mon Sep 17 00:00:00 2001 From: qiaoxingxing <1620998366@qq.com> Date: Fri, 5 Jan 2024 12:08:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=8F=98=E9=87=8F=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/system-design/framework/mybatis/mybatis-interview.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/system-design/framework/mybatis/mybatis-interview.md b/docs/system-design/framework/mybatis/mybatis-interview.md index 45f69255..695e4969 100644 --- a/docs/system-design/framework/mybatis/mybatis-interview.md +++ b/docs/system-design/framework/mybatis/mybatis-interview.md @@ -25,7 +25,13 @@ head: 答: -- `${}`是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如\${driver}会被静态替换为`com.mysql.jdbc. Driver`。 +- `${}`是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于原样文本替换,可以替换任意内容,比如\${driver}会被原样替换为`com.mysql.jdbc. Driver`。 +一个实例:根据参数按任意字段排序: +```sql +select * from users order by ${orderCols} +``` +`orderCols`可以是 `name`、`name desc`、`name,sex asc`等,实现灵活的排序。 + - `#{}`是 sql 的参数占位符,MyBatis 会将 sql 中的`#{}`替换为? 号,在 sql 执行前会使用 PreparedStatement 的参数设置方法,按序给 sql 的? 号占位符设置参数值,比如 ps.setInt(0, parameterValue),`#{item.name}` 的取值方式为使用反射从参数对象中获取 item 对象的 name 属性值,相当于 `param.getItem().getName()`。 ### xml 映射文件中,除了常见的 select、insert、update、delete 标签之外,还有哪些标签?