mybatisPlus的注解sql使用方式,举例说明
时间: 2024-02-28 22:53:53 浏览: 228
Mybatis-Plus提供了多种注解SQL的方式,以下是其中的一些使用方式:
1. @Select注解:用于查询操作,示例代码如下:
```
@Select("select * from user where id = #{id}")
User findById(@Param("id") Long id);
```
2. @Update注解:用于更新操作,示例代码如下:
```
@Update("update user set name = #{name} where id = #{id}")
int updateNameById(@Param("id") Long id, @Param("name") String name);
```
3. @Insert注解:用于插入操作,示例代码如下:
```
@Insert("insert into user(name, age) values(#{name}, #{age})")
int insert(User user);
```
4. @Delete注解:用于删除操作,示例代码如下:
```
@Delete("delete from user where id = #{id}")
int deleteById(@Param("id") Long id);
```
以上是Mybatis-Plus提供的一些常用注解SQL的使用方式,你可以根据实际需要选择合适的方式来进行开发。
相关问题
mybatisplus与mybatis的区别,举例说明下
MyBatisPlus是MyBatis的增强版本,为开发者提供了更为便捷和高效的操作数据库的方式。它有许多新特性和改进,例如基于注解的SQL语句生成、代码自动生成、强大的条件构造器等。举个例子,使用MyBatisPlus的条件构造器,我们可以用类似于面向对象的方式来构造数据库查询语句,代码更加简洁易懂。
MyBatis,Mybatisplus
### MyBatis 和 MyBatis Plus 的区别与用法
#### 一、概念对比
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL 查询、存储过程以及高级映射。开发者可以通过 XML 文件或注解的形式定义 SQL 映射规则,从而实现对数据库的操作[^1]。然而,随着项目的复杂度增加,手动编写大量重复性的 CRUD 方法变得低效且容易出错。
相比之下,MyBatis-Plus (简称 MP) 则是在 MyBatis 基础之上进行了二次封装的增强工具集。MP 不仅保留了 MyBatis 所有的核心功能,还额外增加了许多开箱即用的功能模块,例如通用 Mapper、条件构造器等,极大程度减少了样板代码的数量,显著提升了开发效率[^2]。
---
#### 二、主要特点比较
| **特性** | **MyBatis** | **MyBatis-Plus** |
|------------------------|------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
| **基础功能** | 提供基本的数据访问能力,需自行完成大部分 CRUD 操作 | 完全兼容 MyBatis 并在此基础上扩展了一系列便捷 API |
| **代码生成** | 可借助第三方插件(如 MyBatis Generator)生成简单 DAO 层代码 | 自带强大的代码生成器 `Mybatis-Plus-Generator`,可一键生成 Entity、Mapper、Service 等完整结构 |
| **分页支持** | 使用 PageHelper 插件或其他方式实现分页 | 内置分页插件,配置后即可直接调用 |
| **条件构造** | 需要手动拼接复杂的 WHERE 子句 | 支持通过 Wrapper 类构建灵活的查询条件 |
| **性能优化** | 开发者需自己处理缓存、延迟加载等问题 | 提供多种内置优化手段,减少不必要的查询 |
---
#### 三、使用方法举例
##### (1)传统 MyBatis 实现 CRUD 示例
以下是利用 MyBatis 进行数据操作的一个典型例子:
```java
// User.java - 实体类
public class User {
private Long id;
private String name;
private Integer age;
// Getter and Setter methods...
}
// UserMapper.xml - SQL 映射文件
<select id="selectUserById" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
// UserMapper.java - 接口声明
public interface UserMapper {
User selectUserById(Long id);
}
// 调用示例
@Autowired
private UserMapper userMapper;
public void getUser() {
User user = userMapper.selectUserById(1L); // 根据 ID 获取用户信息
}
```
此模式下,每新增一个实体都需要单独维护对应的 Mapper 接口及 XML 文件,当项目规模较大时显得尤为繁琐[^3]。
---
##### (2)MyBatis-Plus 实现相同功能
采用 MyBatis-Plus 后,上述流程得以大幅简化:
```java
// User.java - 继承 BaseMapper 即获得默认 CRUD 功能
@TableName("user") // 表名绑定
@Data
public class User extends Model<User> {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
}
// UserServiceImpl.java - 自动生成 Service 层逻辑
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {}
// Controller 中调用
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private IUserService userService;
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.getById(id)); // 默认方法获取单条记录
}
}
```
可以看到,得益于 MyBatis-Plus 提供的一系列抽象基类和服务接口,我们无需再显式定义 Mapper 或编写繁杂的 SQL 语句就能轻松达成目的[^4]。
---
#### 四、适用场景分析
尽管两种工具有各自的优势,但在实际选型过程中仍应综合考量具体需求:
- 如果项目本身较为小型或者追求极致灵活性,则可以选择纯 MyBatis 方案;
- 对于中大型应用来说,考虑到长期维护成本及时效性等因素,显然 MyBatis-Plus 更加适合,因为它能够有效降低冗余劳动量的同时保持较高的运行效能[^5]。
---
#### 五、总结说明
综上所述,虽然二者同属同一生态体系之内,但由于定位差异明显故而在应用场景方面也各有侧重。对于初次接触该领域的开发者而言,建议优先尝试 MyBatis-Plus,因为其较低的学习门槛加上丰富的官方文档足以满足绝大多数日常开发所需。
---
###
阅读全文
相关推荐











