mybatisplus 在mapper中写sql
时间: 2025-01-29 14:04:26 浏览: 49
### 使用 MyBatisPlus 在 Mapper 中编写 SQL 查询
在 MyBatisPlus 中,可以通过多种方式在 `Mapper` 接口中编写 SQL 查询。一种常见的方式是使用注解形式来定义查询语句,并结合 Wrapper 来构建复杂条件。
#### 方法一:使用 @Select 注解与 Wrapper 结合
当需要执行较为简单的查询时,可以直接在接口方法上使用 `@Select` 注解并传入自定义的 SQL 字符串:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.ibatis.annotations.Select;
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT SUM(score) as totalScore FROM user ${ew.customSqlSegment}")
Integer getTotalUserScores(QueryWrapper<User> ew);
}
```
此代码片段展示了如何利用 `QueryWrapper` 构建动态 where 子句[^1]。
#### 方法二:完全自定义 SQL 并配合 XML 文件
对于更复杂的业务场景,则可以在对应的 mapper.xml 文件内书写完整的 `<select>` 标签内的 SQL 语句。这允许开发者更加灵活地控制查询逻辑以及处理分页等功能:
```xml
<select id="getUsersByCustomCondition" resultType="com.example.User">
SELECT *
FROM users u
<where>
<!-- 这里可以加入更多条件 -->
<if test="name != null and name != ''">
AND u.name LIKE CONCAT('%',#{name},'%')
</if>
</where>
</select>
```
同时,在 Java 接口侧声明相应的方法签名即可调用上述 XML 定义好的查询功能[^4]。
#### 示例:求和操作
如果想要计算特定列(比如分数)之和,同样也可以采用类似上面提到的第一种办法——即通过 `@Select` 加上 `QueryWrapper` 实现;而对于更为复杂的聚合函数需求,则建议参照第二种方案,在 XML 配置文件中指定详细的 SQL 表达式[^3]。
阅读全文
相关推荐


















