范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot(十一)MyBatis插件之MyBatisPlus

  MyBatis-Plus简介
  MyBatis的插件MyBatis-Plus,又叫苞米豆(baomidou),简称MP,官方说,它是为了猿类崛起而生,为了提高生产率而生,为了简化开发而生,不管它为了什么而生吧,反正是它出生了。
  MyBatis-Plus对MyBatis只做增强不做改变,所以引入它不会对现有工程产生影响,只需要做简单的配置,就可以快速进行单表的CRUD操作,从而节省时间,提高效率。
  MyBatis-Plus插件有很丰富的功能,比如:单表CRUD操作、代码生成、自动分页、逻辑删除等。 MyBatis-Plus使用
  下面我们来简单介绍一下MyBatis-Plus的使用
  1、pom.xml
  去掉MyBatis的核心依赖(org.mybatis.spring.boot.mybatis-spring-boot-starter),增加MyBatis-Plus的依赖:         com.baomidou      mybatis-plus-boot-starter      3.5.1  
  2、配置application.yml、po、dao和Application
  application.yml中配置数据库连接: spring:    datasource:      url: jdbc:mysql://localhost:3306/blog      username: root      password: 123456      type: com.alibaba.druid.pool.DruidDataSource      druid:        initialSize: 5        minIdle: 5        maxActive: 20        maxWait: 2000        validationQuery: select "x"        testOnBorrow: false        testOnReturn: false        testWhileIdle: true
  blog数据库中article表的实体类ArticlePo: @TableName(value = "article")  public class ArticlePo {       @TableId(type = IdType.AUTO)      private Integer id;      private String articleId;      private String title;       // get、set...  }
  注解说明:
  @TableName:表名注解,标识实体类对应的表
  @TableId注解:主键注解,当type = IdType.AUTO时,表示这个主键是自增主键
  blog数据库中article表的dao,ArticleDao: @Repository  public interface ArticleDao extends BaseMapper {  }
  BaseMapper接口:利用Mybatis接口编程的实现机制,默认提供了一系列的增删改查的基础方法。
  在Article11Application中配置 MapperScan 注解: @SpringBootApplication  @MapperScan(basePackages = "com.tn222.springboot.article11.dao")  public class Article11Application {       public static void main(String[] args) {          SpringApplication.run(Article11Application.class, args);      }   }
  3、增加数据
  insert:增加数据,insert返回值int代表insert了多少条记录
  示例:在ArticleController中编写增加数据的接口: @Resource  private ArticleDao articleDao;   @PostMapping("/insert")  public int insert() {      String articleId = UUID.randomUUID().toString().replace("-", "");      ArticlePo articlePo = new ArticlePo();      articlePo.setArticleId(articleId);      articlePo.setTitle("Mybatis-Plus test");      int num = articleDao.insert(articlePo);      return num;  }
  说明:
  1)一般业务逻辑处理在service层,这里为了方便,直接在controller中演示了
  2)@Resource注解:注入ArticleDao,后续的方法中不再重复注入
  4、删除数据
  delete:物理删除数据,返回删除了多少条数据
  示例,删除title为Mybatis-Plus test的数据: @PostMapping("/delete")  public int delete() {      int num = articleDao.delete(Wrappers.lambdaQuery()              .eq(ArticlePo::getTitle, "Mybatis-Plus test"));      return num;  }
  说明:
  1)物理删除后,恢复数据很困难,所以一般情况下,业务处理采用逻辑删除的方式
  5、更新数据
  update: 更新数据
  示例,修改title为Mybatis-Plus test的数据的title为Mybatis-Plus update: @PostMapping("/update")  public int update() {      ArticlePo articlePo = new ArticlePo();      articlePo.setTitle("Mybatis-Plus update");       int num = articleDao.update(articlePo, Wrappers.lambdaUpdate()              .eq(ArticlePo::getTitle, "Mybatis-Plus test"));      return  num;  }
  updateById: 根据主键id更新数据
  示例,修改id为7的数据的title为Mybatis-Plus updateById: @PostMapping("/updateById")  public int updateById() {      ArticlePo articlePo = new ArticlePo();      articlePo.setId(7);      articlePo.setTitle("Mybatis-Plus updateById");      int num = articleDao.updateById(articlePo);      return num;  }
  注意 :
  1、updateById方法:若传入实体Model,则会根据主键把其他字段全部更新一遍
  问题:使用baomidou拿出某条数据的数据实体后,有其他人把数据库中这条数据的某个字段更新了,再用baomidou的updateById方法更新时,会把此字段再更新回来
  解决:
  方法1:使用sql语句,只更新需要更新的字段
  方法2:新建实体Model,Model中只放主键和需要更新的字段
  6、查询数据
  selectOne: 查询单条数据
  示例,查询id为7的数据: @GetMapping("/selectOne")  public Object selectOne() {      ArticlePo articlePo = articleDao.selectOne(Wrappers.lambdaQuery()              .eq(ArticlePo::getId, "7"));      return articlePo;  }
  注意 :
  1、selectOne方法
  1)结果没有数据时,返回null
  2)结果有一条数据时,返回此数据
  3)结果有两条或两条以上数据时,报错
  解决办法:在最后增加 .last(" limit 1 ") 语句
  selectList: 查询多条数据
  示例:查询title为Mybatis-Plus update的数据 @GetMapping("/selectList")  public Object selectList() {      List articlePoList = articleDao.selectList(Wrappers.lambdaQuery()              .eq(ArticlePo::getTitle, "Mybatis-Plus update"));      return articlePoList;  }
  7、打印sql日志
  打印执行的sql,在application.yml中配置,一般配置在开发环境 mybatis-plus:    configuration:      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  MyBatis-Plus的其他注意事项
  1、如果数据库表字段中有desc、describe等mysql关键词或预留关键词,使用selectList/selectOne会报错,需要单独写sql查询语句
  2、有时我们需要在Dao中单独写方法来写sql语句,这时方法的命名跟baomidou自带的命名不要一样,否则即使参数不同,也会有问题:Dao中单独写的方法,会把baomidou的方法覆盖,就调用不到baomidou的方法了
  本文示例代码, 详见
  https://gitee.com/tunan222/spring-boot-demo
  若您觉得还可以,请帮忙点个 "赞" ,谢谢

入手iPhone13mini,使用后感觉很憋屈,大家买小屏手机是为了啥?为了手感入手iPhone13mini,不过用了一段时间之后,总感觉很憋屈,小屏看着眼睛更累不说,带着个半斤充电宝出门也是常事,当主力机属实不太行。同时,最近看新闻说小米12系列也要苹果电脑用起来为什么感觉那么别扭?苹果电脑的外形设计很不错,而且硬件配置也相当高,你用起来觉得别扭绝大部分应该都是因为macos系统的锅,对于早已习惯了windows系统的国内用户而言,刚上手macos系统肯定是不iPhone13最新价格确认,年底再度降价,128GB版本售价更亲民了线下商铺每年临近年底经常会出现年底大清仓这种活动,说白了就是想要在过年之前尽可能多赚点钱,然而在线上这种情况也很普遍,不少手机厂商在年底的时候不仅仅会下调旗下手机的价格,而且还会推又能看见宋紫薇?iQOO9系列定档,外观参数全面曝光自从高通发布骁龙8Gen1处理器,国内手机圈瞬间热闹了起来,小米12系列一加10系列realmeGT2系列纷纷定档。iQOO9系列手机正式官宣明年1月5日发布,全系共计两款手机,外小米12系列配置升级的部分,快充和拍照是重点?屏幕也是重点虽然小米12系列还没有发布,但基本上主要的卖点和升级出现了,简单的盘点一下。这次确定使用三星第二代ltpo技术的e5材质屏幕,支持自适应刷新率,这是这次的升级一部分,处理器是使用骁iPhone15最新爆料提前看,苹果大胆举动能实现吗?文明美无限iPhone13还没捂热呢,iPhone14,甚至iPhone15的爆料又来了。众所周知,苹果iPhone凭借出色的工业设计强大的硬件性能以及出色的系统体验赢得了消费者的华为又传来好消息,再一次让我们看到了科技的力量,令人敬佩华为作为专业生产手机的大企业能在汽车领域一展宏图确实是国人的骄傲。华为在科技界的成绩也是有目共睹的。我国的科技发展速度已经是今非昔比了,在国内外都有着举足轻重的地位!小米和vivo只有在大商场才能买新能源汽车?近日,一向坚定支持新能源汽车的中国科学院院士欧阳明高表示新能源汽车市场已进入陡峭的增长曲线。的确,从今年市场的火爆可以看出,消费者对新能源汽车的接受度也越来越高。造成这种转变的,除新能源各细分赛道的投资机会本文我们将深入分析新能源汽车锂电池(包括钠电池)氢能源石油天然气火电风电光电水电核电生物质发电等到投资机会。石油天然气火电风电光电水电核电生物质发电属于能源输出,他们是生产侧,新能菩提本无树,明镜亦非台。本来无一物,何处惹尘埃。是哲学上的唯心主义吗?这不算是哲学上的唯心主义,这只能算是佛教上的一种导人慰人的禅语。当时,慧能大师看到人生总是这么艰难地活着,不忍心,就写出菩提本无树(印度语,本意是指聪明,愚昧或烦恼,本来就不存在的小米12压力山大,一加realme同时发布新机预告!该选哪一个?看体验了,旗舰机除了配置价格,更重要的是体验。小米也好,realme,一加也罢,都是需要抓住细节和体验。创新或提升品牌价值的同时,需要不断提升体验感和核心竞争力。现在小米在发力小屏
华为发布5年前文章,任正非亲自审签,5年过去的难题仍存有近日,华为在心声社区发布了一篇5年前的文章内容华为到该摧毁产品研发金字塔式的情况下了,由任正非亲自审签。原文中指出了华为产品研发管理体系存在的不足,包含高效率低下权威专家工作能力缺比亚迪销量破5万,成中国新能源汽车领域老大还有谁不服?随着最近各家汽车厂商陆续公布了7月份的销量,大家在7月份的成绩也就为人所熟知,有人欢喜,也有人悲伤。后者的代表就是一贯被称为造车新势力老大的蔚来汽车,销量滑落至造车新势力的第三名,卢伟冰吐槽保泰手机,然后删了,网友说熟悉的卢总又回来了小米集团合伙人,中国区国际部总裁,Redmi品牌总经理卢伟冰在互联网上很有声量,仅次于小米创始人雷军,卢伟冰非常敢说,之前有段经常对比友商,最多的自然是荣耀一些机型,不过这一两年还芯片取得重大突破,中国芯或将弯道超车我国芯片再次迎来重大突破,芯片行业将迎来大变革,外媒盛赞中国速度之快,这是怎么一回事呢?众所周知,传统芯片的核心设备,也就是光刻机制造技术,一直牢牢的掌握在荷兰手中,而阿斯麦光刻机采取测谎辅助手段!独家还原阿里女员工被侵害案后的18天,酒局风波后的罗生门8月14日晚,济南市公安局槐荫区分局发布通报,阿里女员工周某被侵害案,犯罪嫌疑人王某文张某因涉嫌强制猥亵罪,被济南市槐荫区分局依法采取刑事强制措施,没有证据证明有强奸犯罪事实发生。注销睡眠休眠有啥不同?Win10五种电源模式详解Windows10电源模式有五大选择关机重启注销睡眠休眠。那么,同是重新登录,注销和重启有何区别?同是休息,睡眠与休眠有何不同?系统打完补丁,是选择重启后更新,还是更新后关机?其实小米给老用户返还购机款即将结束!雷军喊话没领的我们等你全球手机厂商非常的多,且每家都有庞大的用户群,但要说做宠用户的手机厂商,那么无疑只有小米一家,因为小米不仅会给用户带来高性价比的手机,而且在系统更新适配等售后服务上也极为的良心,用多地宣布暂停网约车驾驶证办理,进行总量控制,加速司机清退工作最近10年网约车行业接着移动互联网获得了快速发展,短短10年时间网约车便彻底改变了人们的出行方式,而在这之前国内的出行方式已经几十年没有过根本性改变,而这个所谓的交通新业态,在短短出走印度失败后,富士康砸重金欲重返大陆,郭台铭认清现实了?阅读之前,希望各位朋友能够点击右上方免费的关注,这样您每天都可以收到作者为您提供的新闻了,谢谢每一位读者的支持。说起富士康这家公司大家想必是再熟悉不过了,一直以来,富士康的发展都十安卓新物种,多亲F21Pro发布,真的适合孩子吗?智能手机诞生十多年来,燎原之势快速收割功能机市场,甚至影响功能机逐渐转向智能化,进而诞生怪异的智能功能结合体手机。多亲科技宣布,即将推出旗下旗舰产品多亲F21Pro,号称安卓新物种小米雷军身上的那些优点,成就了他今年的成就作为创业者的我佩服的人不多,雷军算一个。为什么会喜欢雷军这个人?首先就是他的亲民。因为雷军的人设就是亲民。雷军他是一个富豪,但他对外的形象不是豪车和名表,而是不打领带的衬衫和牛仔裤