mybatis中,根据查询条件类型:类型为1时,返回年龄字段,类型为2时返回住址字段,mybatis中sql应该怎么写
时间: 2024-03-17 10:45:17 浏览: 36
您可以使用 MyBatis 的动态 SQL 功能来实现这个需求。以下是一个示例:
```xml
<select id="getUserInfo" resultType="java.util.Map">
SELECT
<choose>
<when test="type == 1">
age
</when>
<when test="type == 2">
address
</when>
</choose>
FROM user_info
WHERE user_id = #{userId}
</select>
```
在上面的示例中,我们使用了 `<choose>` 标签来根据条件选择要查询的字段。如果 `type` 为 1,则查询年龄字段;如果 `type` 为 2,则查询住址字段。注意,`<when>` 标签的 `test` 属性用于判断条件是否成立。最终查询的表名和查询条件是固定的,只有查询的字段是动态的。
另外,需要注意的是,查询结果的类型需要设置为 `java.util.Map`,因为查询的字段是动态的,无法确定返回值的类型。
相关问题
mybatis查询结果中的int类型字段转换为字符串返回
你可以使用MyBatis的resultType属性来自定义查询结果类型,并在Java对象中将int类型字段转换为字符串类型。例如:
1. 在Mapper.xml中定义一个resultType为自定义Java对象类型的select语句:
```xml
<select id="selectUser" resultType="com.example.User">
SELECT id, name, age, CAST(age AS CHAR) AS age_str FROM user WHERE id = #{id}
</select>
```
在这个例子中,我们将查询结果中的age字段转换为字符串类型,并将其命名为age_str。
2. 在自定义的Java对象中添加一个与转换后的字段同名的字符串类型字段,并在该字段的setter方法中进行类型转换:
```java
public class User {
private int id;
private String name;
private int age;
private String age_str;
// getter and setter methods
public void setAge_str(String age_str) {
this.age_str = age_str;
this.age = Integer.parseInt(age_str);
}
}
```
在这个例子中,我们通过age_str字段的setter方法将字符串类型的age字段转换为int类型,并将其赋值给age字段。这样,查询结果中的age字段就被转换为了字符串类型的age_str字段,并返回给调用方。
java中mybatis-plus查询sql时,字段为关键字怎么办
如果你的数据库字段名是一个关键字,在使用Mybatis-plus进行查询时,可以使用反引号(`)将该字段名括起来,例如:
```java
@Select("select `select`, `from`, `where` from my_table where `order` = #{order}")
List<MyTable> selectFromWhere(@Param("order") String order);
```
在上面的例子中,`select`、`from`、`where`、`order` 都是数据库的关键字,我们使用反引号将它们括起来,这样就不会导致sql解析错误了。
当然,更好的做法是避免使用数据库关键字作为字段名,以免带来不必要的麻烦。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)