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

广告页面模板网站肇庆建设银行招聘网站

广告页面模板网站,肇庆建设银行招聘网站,网站备案查询验证码错误,商丘的互联网公司本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作#xff0c;帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询#xff0c;还是复杂的多表联动#xff0c;甚至是大数据量的批量操作… 本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询还是复杂的多表联动甚至是大数据量的批量操作IService 都能为你提供便利的解决方案。 文章目录 前言 Iservice接口基本业务 Iservice接口复杂业务 IService的Lambda方法 IService的批量新增 总结 前言 现代 Java 开发中Spring 框架和 MyBatis-Plus 已成为开发高效、灵活的企业级应用程序的重要工具。MyBatis-Plus 作为 MyBatis 的增强工具提供了丰富的功能来简化数据库操作其中 IService 接口是其核心之一。IService 不仅为我们提供了常见的 CRUD 操作还支持 Lambda 查询、批量操作等高级功能极大地提高了开发效率。 本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询还是复杂的多表联动甚至是大数据量的批量操作IService 都能为你提供便利的解决方案。 Iservice接口基本业务 首先引入依赖swagger依赖和web依赖 dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-openapi2-spring-boot-starter/artifactIdversion4.1.0/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency 然后配置swagger信息 knife4j:enable: trueopenapi:title: 用户管理接口文档description: 用户管理接口文档email: zhanghuyiitcast.cnconcat: 虎哥url: https://www.itcast.cnversion: v1.0.0group:default:group-name: defaultapi-rule: packageapi-rule-resources:- com.itheima.mp.controller UserController类 新增用户 package com.itheima.mp.controller;import cn.hutool.core.bean.BeanUtil; import com.itheima.mp.domain.dto.UserFormDTO; import com.itheima.mp.domain.po.User; import com.itheima.mp.service.IUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;Api(tags用户管理接口) RestController RequestMapping(/user) public class UserController {Autowiredprivate IUserService userService;ApiOperation(新增用户接口)PostMapping//往往会传送json格式数据所以加RequestBodypublic void saveUseer(RequestBody UserFormDTO userFormDTO) {//把DTO拷贝到poUser user BeanUtil.toBean(userFormDTO, User.class);//新增userService.save(user);} }删除用户 ApiOperation(删除用户接口)DeleteMapping({id})//往往会传送json格式数据所以加RequestBodypublic void deleteUserById(ApiParam(用户id) PathVariable(id) Long id) {userService.removeById(id);} 根据id查询用户接口 ApiOperation(根据id查询用户)GetMapping({id})public UserVO getUserById(ApiParam(用户id) PathVariable(id) Long id) {//查询用户User user userService.getById(id);//把po拷贝到voUserVO userVO BeanUtil.copyProperties(user, UserVO.class);return userVO;} 根据id批量查询用户 ApiOperation(根据id批量查询用户)GetMappingpublic ListUserVO queryUserByIds(ApiParam(用户id集合 ) RequestParam(ids) ListLong ids) {//查询用户ListUser users userService.listByIds(ids);//把PO拷贝到VOListUserVO userVOS BeanUtil.copyToList(users, UserVO.class);return userVOS;} Iservice接口复杂业务 根据id扣减用户余额 ApiOperation(根据id扣除余额)PutMapping(/{id}/deduction/{money})public void deductMoneyById(ApiParam(用户id) PathVariable(id) Long id,ApiParam(扣减的金额) PathVariable(money) Integer money){userService.deductBalance(id,money);} IUserService接口 public interface IUserService extends IServiceUser {void deductBalance(Long id,Integer money); } UserServiceImpl类 package com.itheima.mp.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.itheima.mp.domain.po.User; import com.itheima.mp.mapper.UserMapper; import com.itheima.mp.service.IUserService; import org.springframework.stereotype.Service;Service public class UserServiceImpl extends ServiceImplUserMapper, User implements IUserService {Overridepublic void deductBalance(Long id, Integer money) {//查询用户User user this.getById(id);//校验用户状态if(usernull || user.getStatus() 2){throw new RuntimeException(用户状态异常);}//校验余额是否充足if(user.getBalance() money){throw new RuntimeException(用户余额不足);}//扣减余额baseMapper.deductBalance(id,money);} }userMapperr类  Update(update user set balance balance - #{money} where id id)void deductBalance(Param(id)Long id,Param(money)Integer money); 通过localhost:8080/doc.html就可以访问接口文档 IService的Lambda方法 select idqueryUsers resultTypecom.itheima.mp.domain.po.UserSELECT *FROM tb_userwhereif testname ! nullAND username LIKE #{name]/ifif teststatus ! nullANDstatus#{status}/ifif testminBalance ! null and maxBalance ! nullAND balance BETWEEN #{minBalance}AND #{maxBalance}/if/where /select UserController类 ApiOperation(根据复杂条件查询用户接口)GetMapping(/list)public ListUserVO queryUsers(UserQuery userQuery) {//查询用户poListUser users userService.queryUsers(userQuery.getName(),userQuery.getStatus(),userQuery.getMinBalance(),userQuery.getMaxBalance());ListUserVO userVOS BeanUtil.copyToList(users, UserVO.class);return userVOS;} IService接口  ListUser queryUsers(String name, Integer status, Integer minBalance, Integer maxBalance); UserServiceImpl实现类  Overridepublic ListUser queryUsers(String name, Integer status, Integer minBalance, Integer maxBalance) {ListUser users lambdaQuery().like(name ! null, User::getUsername, name).eq(status ! null, User::getStatus, status).ge(minBalance ! null, User::getBalance, minBalance).le(maxBalance ! null, User::getBalance, maxBalance).list();return users;} Overridepublic void deductBalance(Long id, Integer money) {//查询用户User user this.getById(id);//校验用户状态if(usernull || user.getStatus() 2){throw new RuntimeException(用户状态异常);}//校验余额是否充足if(user.getBalance() money){throw new RuntimeException(用户余额不足);}//余额int remain user.getBalance() - money;lambdaUpdate().set(User::getBalance, remain).set(remain 0, User::getStatus, 2).eq(User::getId, id)//防止多线程引发.eq(User::getBalance, user.getBalance()).update();} IService的批量新增 Testvoid testSaveBatch(){long b System.currentTimeMillis();//每次批量处理1000条ListUser list new ArrayList(1000);for(int i 1;i 100000;i){list.add(buildUser(i));if(i % 10000 0){//每1000条批量处理一次userService.saveBatch(list);list.clear();}}long e System.currentTimeMillis();System.out.println(耗时(e - b));} 在application.yml文件中加入rewriteBatchedStatementstrue spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mp?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/ShanghairewriteBatchedStatementstrue 总结 通过本文的讲解我们深入探讨了 MyBatis-Plus 中 IService 接口的多种常见用法。首先IService 的基本业务方法简化了常见的 CRUD 操作开发者无需编写冗长的 SQL 语句便能实现数据库的增、删、改、查等操作。其次借助 MyBatis-Plus 强大的 Lambda 功能开发者可以更加灵活和简洁地构建查询条件避免了传统 SQL 中条件拼接的复杂性。接着我们介绍了如何通过 IService 实现复杂业务逻辑尤其是多表操作的处理进一步增强了应用的可扩展性和灵活性。最后批量操作作为大数据量处理中的一项重要优化方法saveBatch 使得批量插入变得更加简单高效减少了数据库访问的次数。 通过充分掌握 IService 接口的使用你可以大幅提升开发效率减少代码重复度并且能够灵活应对各种复杂的业务场景。希望本文所介绍的内容能够帮助你更好地理解并应用 MyBatis-Plus 的强大功能提升你的开发水平与应用性能。
http://www.ho-use.cn/article/10821252.html

相关文章:

  • 做徽章的网站国外外贸需求网站
  • 常州武进建设局网站赣州城乡建设局网站
  • php网站开发背景介绍c 做网站源码实例
  • 上海市建设安全协会 - 网站首页做电锯电音的网站
  • 企业内部管理系统网站建设微信商家小程序怎么弄
  • 昆明做网站方案广州 济南网站建设公司 网络服务
  • 做国际网站的上海高端网站公司广州网站设计哪家公司好
  • 手机网站静态模板做网站的项目介绍
  • 石家庄的网站建设公司哪家好中英文网站为什么要分开做
  • 做网站后台程序是怎么来的怎么看一个网站是谁做的
  • 类模板模板下载网站有哪些内容免费制作链接
  • 济南环保行业网站开发做app用什么软件
  • 阳江网站推广优化淘宝客cms网站模板下载
  • 网站建设哪便宜wordpress 主题 定制
  • 免费快速建站工具上海做网站的网站
  • 一级a做爰片免费网站神马电影网站的建设模式是指什么时候
  • 彩票网站开发风险风铃上做的网站发布时号码填写
  • 常青藤网站建设龙岗做网站公司
  • 电子商务网站建设的目标是什么意思学网站开发工作好找吗
  • 枣庄定制网站建设制作wordpress localhost
  • 如何用织梦仿制网站flash可以用来制作网页吗
  • 做哪个网站零售最好上海人才网官网招聘人力资源专业
  • 网站分析的优劣势网络营销是什么经营模式
  • 自己做网站开店建设校园网站的必要性
  • 网站开发发展方向企业管理系统项目经历怎么写简历范文
  • 网站域名的用处北京h5网站建设公司
  • 网站建设成果百度云盘网官网
  • php手机网站怎么做竞赛网站开发
  • 优秀企业网站欣赏工程承包
  • c做项目的网站叫别人做网站要多久