目錄
條件構造器
案例
自定義SQL
案例
Service接口
案例
綜合案例
條件構造器
案例
@Testvoid testQueryMapper() {// 創建 QueryWrapper 實例QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.select("id," + "username," + "info," + "balance ");// 添加條件:用戶名包含 "o",余額大于等于 1000queryWrapper.like("username", "o").ge("balance", 1000);// 使用 MyBatis-Plus 的方法執行查詢List<User> users = userMapper.selectList(queryWrapper);users.forEach(System.out::println);}
@Testvoid testUpdateWapper() {UpdateWrapper<User> wrapper = new UpdateWrapper<>();// 使用實體的函數式方式指定要更新的字段wrapper.set("balance", 5000).eq("username", "jack");// 執行更新操作int updated = userMapper.update(null, wrapper);if (updated == 1) {// 更新成功System.out.println("更新成功");} else {// 更新失敗或無記錄被更新System.out.println("更新失敗");}}
@Testvoid testUpdateWapper1(){UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();updateWrapper.in("id", Arrays.asList(1, 2, 4));updateWrapper.setSql("balance = balance-200");userMapper.update(null,updateWrapper);}
自定義SQL
案例
Service接口
案例
@Testvoid testSaveUser() {User user = new User();
// user.setId(5L);user.setUsername("馬超");user.setPassword("123");user.setPhone("18688990011");user.setBalance(200);user.setInfo("{\"age\": 24, \"intro\": \"英文老師\", \"gender\": \"female\"}");user.setCreateTime(LocalDateTime.now());user.setUpdateTime(LocalDateTime.now());userService.save(user);}@Testvoid testQuery() {List<User> users = userService.listByIds(Arrays.asList(1L, 2l, 3l));users.forEach(System.out::println);}
綜合案例
@RequestMapping("/users")
@RestController
@Api(tags = "用戶管理接口")
//配合final 完成構造函數注入
@RequiredArgsConstructor
public class UserController {private final IUserService iUserService;@ApiOperation("新增用戶管理接口")@PostMappingpublic void saveUser(@RequestBody UserFormDTO userFormDTO) {User user = new User();
// 1.把Dto拷貝到PoBeanUtil.copyProperties(userFormDTO, user);iUserService.save(user);}@ApiOperation("刪除用戶管理接口")@DeleteMapping("{id}")public void deleteUserById(@ApiParam("用戶id") @PathVariable("id") long id) {iUserService.removeById(id);}@ApiOperation("根據id查詢用戶接口")@GetMapping("{id}")public UserVO queryUserById(@ApiParam("用戶id") @PathVariable("id") long id) {User user = iUserService.getById(id);
// 拷貝;return BeanUtil.copyProperties(user,UserVO.class) ;}@ApiOperation("根據id批量查詢用戶接口")@GetMappingpublic List<UserVO> queryUserByIds(@ApiParam("用戶集合ids集合") @RequestParam("ids") List<Long> ids) {
// 根據ids集合查詢用戶集合List<User> users = iUserService.listByIds(ids);
// 拷貝return BeanUtil.copyToList(users, UserVO.class);}@ApiOperation("根據id扣減用戶余額")@PutMapping("/{id}/deduction/{money}")public void deductMoneyById(@ApiParam("用戶id") @PathVariable("id") Long id, @ApiParam("扣減的金額") @PathVariable("money") Integer money) {iUserService.deductMoneyById(id, money);}}
@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {private final UserMapper userMapper;@Overridepublic void deductMoneyById(Long id, Integer money) {
// 查詢用用戶余額是否支持扣減
// 已經注入mapper了
// User user1 = baseMapper.selectById(id);User user = this.getById(id);if (user == null || user.getStatus() == 2) {throw new RuntimeException("用戶狀態異常");}// 校驗用戶余額是否支持扣減if (user.getBalance() - money < 0) {throw new RuntimeException("用戶余額不足");}UpdateWrapper<User> wrapper = new UpdateWrapper<>();wrapper.eq("id",id);
// 完成扣減baseMapper.deductMoneyById(wrapper,money);}
}
void deductMoneyById(@Param("ew") UpdateWrapper<User> eq, @Param("money")Integer money);
<update id="deductMoneyById">UPDATE user SET balance = balance-#{money} ${ew.customSqlSegment}</update>