当前位置: 首页 > news >正文

com.baomidou.mybatisplus.extension.service.IService用法详解及使用例子

IService 是 MyBatis-Plus 中的一个接口,提供了通用的 CRUD 操作,简化了数据库操作的代码。下面是 IService 的用法详解及示例代码。

1. 引入依赖

确保在你的 pom.xml 中添加了 MyBatis-Plus 的依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.0</version> <!-- 请根据实际情况使用最新版本 -->
</dependency>

2. 创建实体类

首先,创建一个实体类,例如 User

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;@TableName("user") // 指定表名
public class User {@TableId // 主键private Long id;private String name;private Integer age;// Getters and Setters
}

3. 创建 Mapper 接口

创建一个 Mapper 接口,继承 BaseMapper

import com.baomidou.mybatisplus.core.mapper.BaseMapper;public interface UserMapper extends BaseMapper<User> {
}

4. 创建 Service 接口

创建一个 Service 接口,继承 IService

import com.baomidou.mybatisplus.extension.service.IService;public interface UserService extends IService<User> {
}

5. 创建 Service 实现类

实现 Service 接口:

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 可以添加自定义的方法
}

6. 使用 Service

在你的 Controller 中使用 UserService

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@PostMappingpublic boolean saveUser(@RequestBody User user) {return userService.save(user);}@GetMapping("/{id}")public User getUser(@PathVariable Long id) {return userService.getById(id);}@GetMappingpublic List<User> getAllUsers() {return userService.list();}@PutMappingpublic boolean updateUser(@RequestBody User user) {return userService.updateById(user);}@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Long id) {return userService.removeById(id);}
}

7. 常用方法

IService 提供了一些常用方法,包括:

  • save(T entity):保存一个实体
  • removeById(Serializable id):根据 ID 删除
  • updateById(T entity):根据 ID 更新
  • getById(Serializable id):根据 ID 查询
  • list():查询所有记录
  • count():查询总数

总结

通过继承 IService,你可以快速实现 CRUD 操作,减少了代码量。MyBatis-Plus 还支持很多功能,如条件构造器、分页等,可以进一步提高开发效率。

在 MyBatis-Plus 中,可以在服务实现类中添加自定义方法,以实现特定的业务逻辑。下面是如何在 UserServiceImpl 中添加自定义方法的示例。

1. 添加自定义方法到 Service 接口

首先,在 UserService 接口中定义你想要的自定义方法。例如,我们可以添加一个方法来根据年龄查询用户列表:

import java.util.List;public interface UserService extends IService<User> {List<User> findByAge(Integer age); // 自定义方法
}

2. 在 Service 实现类中实现自定义方法

接下来,在 UserServiceImpl 中实现这个方法。你可以使用 UserMapper 来执行自定义查询:

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 实现自定义方法@Overridepublic List<User> findByAge(Integer age) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", age); // 添加条件return this.list(queryWrapper); // 调用基类方法查询}
}

3. 在 Controller 中使用自定义方法

最后,可以在控制器中调用这个自定义方法。例如,添加一个新的 API 端点来根据年龄查询用户:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;// 其他 CRUD 方法...@GetMapping("/age/{age}")public List<User> getUsersByAge(@PathVariable Integer age) {return userService.findByAge(age); // 调用自定义方法}
}

4. 完整的示例

现在你的 UserServiceUserServiceImpl 中已经有了自定义方法,而 UserController 也可以根据年龄查询用户。以下是最终的代码片段:

UserService.java
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;public interface UserService extends IService<User> {List<User> findByAge(Integer age); // 自定义方法
}
UserServiceImpl.java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import java.util.List;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {@Overridepublic List<User> findByAge(Integer age) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("age", age);return this.list(queryWrapper);}
}
UserController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;// 其他 CRUD 方法...@GetMapping("/age/{age}")public List<User> getUsersByAge(@PathVariable Integer age) {return userService.findByAge(age);}
}

总结

通过这种方式,你可以轻松地在服务层添加自定义方法,利用 MyBatis-Plus 提供的强大功能来实现复杂的业务逻辑。


http://www.mrgr.cn/news/57734.html

相关文章:

  • Vue项目中实现拖拽上传附件:原生JS与Element UI组件方法对比
  • vue npm run ...时 报错-系统找不到指定的路径
  • 基于SpringBoot的“心灵治愈交流平台”的设计与实现(源码+数据库+文档+PPT)
  • React Native 项目使用Expo模拟器运行iOS和Android
  • 【如何编写 Java 计算器】
  • 记录:网鼎杯2024赛前热身WEB01
  • 用phython处理当前路径的文件
  • 口含烟贴纸设计公司哪家好?
  • 算法复习核心题目策略总结,以便回顾
  • STM32 C语言基础知识
  • JavaWeb合集22-Apache POI
  • 某游戏的某促销活动,会向玩家推荐一个道具
  • 桂花网蓝牙网关X1000覆盖范围有多少?
  • Java笔试07
  • 1024程序员java纪念
  • 使用Selenium时,如何模拟正常用户行为?
  • 参加了十多个面试,一个offer也没拿到...为什么?
  • Base64编码
  • 真AI遇到招聘管理系统,帮助企业打造新质生产力
  • Vue3:横向滑动导航组件路由跳转保留滚动(条)量
  • HKC双模显示器评测报告 - HKC G27H7Pro
  • 1688API商品详情接口如何获取
  • 解锁PDF权限密码
  • 腾讯地图SDK 手势失效或冲突的解决办法
  • 没有基础,学习HCIE难吗?
  • 【多商户商城适用于哪些行业】