mybatis中${}使用的例子
时间: 2023-11-01 13:22:51 浏览: 35
在MyBatis中,${}语法用于替换SQL语句中的占位符,例如:
```xml
<select id="findUserByName" resultType="User">
SELECT * FROM user WHERE name = '${name}'
</select>
```
在这个例子中,${name}是一个占位符,它会被用户传入的实际值替换。例如,如果用户传入的name为"Tom",则SQL会被替换为:
```sql
SELECT * FROM user WHERE name = 'Tom'
```
需要注意的是,${}语法是直接将用户传入的值拼接到SQL语句中,因此存在SQL注入的风险。为了避免这个问题,可以使用#{}语法,它会将用户传入的值作为参数进行预编译,从而避免SQL注入的风险。
相关问题
mybatis的$符号使用案例
MyBatis中的$符号用于直接替换变量,不会对变量进行预编译处理。以下是一些使用$符号的案例:
1. 查询语句中使用$符号替换变量
```
<select id="getUsersByCity" resultType="User">
SELECT * FROM users WHERE city = '${city}'
</select>
```
在这个例子中,${city}将被实际的城市名替换,例如:SELECT * FROM users WHERE city = 'Beijing'。
2. 更新语句中使用$符号替换变量
```
<update id="updateUser" parameterType="User">
UPDATE users SET name='${name}', age=${age} WHERE id=${id}
</update>
```
在这个例子中,${name}和${age}将被实际的用户姓名和年龄替换,${id}将被实际的用户id替换。
3. 插入语句中使用$符号替换变量
```
<insert id="insertUser" parameterType="User">
INSERT INTO users (name, age) VALUES('${name}', ${age})
</insert>
```
在这个例子中,${name}和${age}将被实际的用户姓名和年龄替换。
mybatis中@Results的使用例子
在 MyBatis 中,`@Results` 注解用于定义查询结果集中的映射关系。下面是一个使用 `@Results` 注解的例子:
```java
@Results(id = "userMap", value = {
@Result(property = "id", column = "user_id", id = true),
@Result(property = "username", column = "user_name"),
@Result(property = "password", column = "user_password")
})
@Select("SELECT user_id, user_name, user_password FROM user WHERE user_id = #{userId}")
User getUserById(Integer userId);
```
在这个例子中,我们使用了 `@Results` 注解来定义了一个名为 `userMap` 的结果集映射关系。其中,`@Result` 注解用于定义每个属性与列之间的映射关系。例如,`@Result(property = "id", column = "user_id", id = true)` 表示将查询结果中的 `user_id` 列映射到 `id` 属性,并且 `id` 属性是主键。
使用 `@Results` 注解后,我们可以在 SQL 中直接引用该映射关系,如上面的例子中的 `SELECT` 语句中的 `user_id`、`user_name` 和 `user_password` 列都会被映射到 `User` 对象的 `id`、`username` 和 `password` 属性。