安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

SpringBoot(十一)MyBatis插件之MyBati

5月9日 相见欢投稿
  MyBatisPlus简介
  MyBatis的插件MyBatisPlus,又叫苞米豆(baomidou),简称MP,官方说,它是为了猿类崛起而生,为了提高生产率而生,为了简化开发而生,不管它为了什么而生吧,反正是它出生了。
  MyBatisPlus对MyBatis只做增强不做改变,所以引入它不会对现有工程产生影响,只需要做简单的配置,就可以快速进行单表的CRUD操作,从而节省时间,提高效率。
  MyBatisPlus插件有很丰富的功能,比如:单表CRUD操作、代码生成、自动分页、逻辑删除等。MyBatisPlus使用
  下面我们来简单介绍一下MyBatisPlus的使用
  1、pom。xml
  去掉MyBatis的核心依赖(org。mybatis。spring。boot。mybatisspringbootstarter),增加MyBatisPlus的依赖:!MyBatisPlus依赖dependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。5。1versiondependency
  2、配置application。yml、po、dao和Application
  application。yml中配置数据库连接:spring:datasource:url:jdbc:mysql:localhost:3306blogusername:rootpassword:123456type:com。alibaba。druid。pool。DruidDataSourcedruid:initialSize:5minIdle:5maxActive:20maxWait:2000validationQuery:selectxtestOnBorrow:falsetestOnReturn:falsetestWhileIdle:true
  blog数据库中article表的实体类ArticlePo:TableName(valuearticle)publicclassArticlePo{TableId(typeIdType。AUTO)privateIprivateStringarticleId;privateSget、set。。。}
  注解说明:
  TableName:表名注解,标识实体类对应的表
  TableId注解:主键注解,当typeIdType。AUTO时,表示这个主键是自增主键
  blog数据库中article表的dao,ArticleDao:RepositorypublicinterfaceArticleDaoextendsBaseMapper{}
  BaseMapper接口:利用Mybatis接口编程的实现机制,默认提供了一系列的增删改查的基础方法。
  在Article11Application中配置MapperScan注解:SpringBootApplicationMapperScan(basePackagescom。tn222。springboot。article11。dao)publicclassArticle11Application{publicstaticvoidmain(String〔〕args){SpringApplication。run(Article11Application。class,args);}}
  3、增加数据
  insert:增加数据,insert返回值int代表insert了多少条记录
  示例:在ArticleController中编写增加数据的接口:ResourceprivateArticleDaoarticleDPostMapping(insert)publicintinsert(){StringarticleIdUUID。randomUUID()。toString()。replace(,);ArticlePoarticlePonewArticlePo();articlePo。setArticleId(articleId);articlePo。setTitle(MybatisPlustest);intnumarticleDao。insert(articlePo);}
  说明:
  1)一般业务逻辑处理在service层,这里为了方便,直接在controller中演示了
  2)Resource注解:注入ArticleDao,后续的方法中不再重复注入
  4、删除数据
  delete:物理删除数据,返回删除了多少条数据
  示例,删除title为MybatisPlustest的数据:PostMapping(delete)publicintdelete(){intnumarticleDao。delete(Wrappers。lambdaQuery()。eq(ArticlePo::getTitle,MybatisPlustest));}
  说明:
  1)物理删除后,恢复数据很困难,所以一般情况下,业务处理采用逻辑删除的方式
  5、更新数据
  update:更新数据
  示例,修改title为MybatisPlustest的数据的title为MybatisPlusupdate:PostMapping(update)publicintupdate(){ArticlePoarticlePonewArticlePo();articlePo。setTitle(MybatisPlusupdate);intnumarticleDao。update(articlePo,Wrappers。lambdaUpdate()。eq(ArticlePo::getTitle,MybatisPlustest));}
  updateById:根据主键id更新数据
  示例,修改id为7的数据的title为MybatisPlusupdateById:PostMapping(updateById)publicintupdateById(){ArticlePoarticlePonewArticlePo();articlePo。setId(7);articlePo。setTitle(MybatisPlusupdateById);intnumarticleDao。updateById(articlePo);}
  注意:
  1、updateById方法:若传入实体Model,则会根据主键把其他字段全部更新一遍
  问题:使用baomidou拿出某条数据的数据实体后,有其他人把数据库中这条数据的某个字段更新了,再用baomidou的updateById方法更新时,会把此字段再更新回来
  解决:
  方法1:使用sql语句,只更新需要更新的字段
  方法2:新建实体Model,Model中只放主键和需要更新的字段
  6、查询数据
  selectOne:查询单条数据
  示例,查询id为7的数据:GetMapping(selectOne)publicObjectselectOne(){ArticlePoarticlePoarticleDao。selectOne(Wrappers。lambdaQuery()。eq(ArticlePo::getId,7));returnarticlePo;}
  注意:
  1、selectOne方法
  1)结果没有数据时,返回null
  2)结果有一条数据时,返回此数据
  3)结果有两条或两条以上数据时,报错
  解决办法:在最后增加。last(limit1)语句
  selectList:查询多条数据
  示例:查询title为MybatisPlusupdate的数据GetMapping(selectList)publicObjectselectList(){ListarticlePoListarticleDao。selectList(Wrappers。lambdaQuery()。eq(ArticlePo::getTitle,MybatisPlusupdate));returnarticlePoL}
  7、打印sql日志
  打印执行的sql,在application。yml中配置,一般配置在开发环境mybatisplus:configuration:logimpl:org。apache。ibatis。logging。stdout。StdOutImpl
  MyBatisPlus的其他注意事项
  1、如果数据库表字段中有desc、describe等mysql关键词或预留关键词,使用selectListselectOne会报错,需要单独写sql查询语句
  2、有时我们需要在Dao中单独写方法来写sql语句,这时方法的命名跟baomidou自带的命名不要一样,否则即使参数不同,也会有问题:Dao中单独写的方法,会把baomidou的方法覆盖,就调用不到baomidou的方法了
  本文示例代码,详见
  https:gitee。comtunan222springbootdemo
  若您觉得还可以,请帮忙点个赞,谢谢
投诉 评论 转载

SpringBoot(十一)MyBatis插件之MyBatiMyBatisPlus简介MyBatis的插件MyBatisPlus,又叫苞米豆(baomidou),简称MP,官方说,它是为了猿类崛起而生,为了提高生产率而生,为了简化……MIUI13部分功能亮相,高管暗示新系统8月发布之前大李同学透露,内测中心会在8月跟随新版MIUI一起做一次调整,前两天大李又暗示了一波8月,基本可以确定MIUI13会在8月小米秋季发布会上亮相,而且那场发布会还会有平板和新……黑马编程C学习笔记第10篇后面的课程简直就是举步维艰哭哭2022。4。1P41goto语句(跳转)无条件跳转goto标记;(标记存在即跳转,跳转中间)(少用)代码GotoF……空气能电热太阳能燃气四种热水器到底哪个更好?最近听很多网友来问,说市面上目前的热水器,到底哪种热水器比较实用?于是我就整理了一些资料,来和大家一起探讨研究下。目前国内热水器产品主要有电热水器、燃气热水器、空气能热水……学生党20002500元价位段手机推荐2000到2500元机长目前选择很多,并且部分品牌机型性能要比3000价位段手机还要强,如果要买这个价位段的手机,机长建议考虑以下几款。第一款:IQOONeo5骁龙……新款高颜值耳机开箱,看着挺养眼,用着也舒坦真无线耳机为什么会很普及?你听到最多的理由是不是便捷?现在如果再有人问同样的问题,我想社恐才是一个硬核理由。可以说,社恐一词不仅仅赋予了真无线耳机新的意义,也助推了耳机个……vivoX70新机官宣9月9日发布,配置外观一起曝光目前,所官宣的新机并不多,毕竟9月份才刚刚开始,主力都在月中,而9月份也是开学季,市场的需求也有所增长。智能手机作为数码行业中的高速发展产品,更新速度极快,对产品的要求也会越来……网点迎来关停潮!银行和保险公司集体撤退,释放出什么信号?互联网时代改变了银行与保险行业的传统经营模式。数字货币与线上支付的普及运用大大减少了对传统银行保险服务的需求。虚拟经济的需求与金融科技的发展促生了新的金融产品与服务,而这些一般……互联网裁员不一定是坏事最近互联网裁员的消息一直有刷到,有赞,京东,腾讯,阿里,字节跳动均榜上有名,其实细想一下,这并不是一件坏事。1。首先互联网的黄金十年已经过去了,如今是趋于饱和状态,有必要……任正非期望何时实现,数据出炉,新荣耀任重而道远由于西方的严密封锁,华为无奈之下断臂求生,出售了亲儿子荣耀品牌,这既给华为储备了过冬的粮食,同时也避免荣耀受到打压的牵连,让荣耀有了个没有束缚的生长空间。在分手之时,任正非对荣……iQOO10曝光无边界一体屏5500mAh,无可挑剔一直以来,iQOO这个手机品牌凭借着惊艳的外观设计和强大的硬件配置,深受许多年轻人的喜爱。正是因为这个原因,iQOO每每发布新手机的时候,都是会受到非常多的小伙伴的关注的。其实……相互宝退出,能退保费吗?昨天的一个重磅财经新闻,就是阿里蚂蚁金融下的互助保险产品相互宝宣布退出。今年已经有近10家互助保险产品停止和退出。相互宝是最大和最后退出的了。由于涉及7000万客户……
MES智能制造系统的实施应用一次电脑网络有线无线设置亚马逊全球会员日定档接棒618,64小时促销能玩出新花样吗?黑鲨5和黑鲨5pro区别点在哪里,参数哪个好?手机NFC是什么?怎么使用?2022年适用于全新MacBook的最佳macOS应用程序苹果的AR眼镜就快来了,你会为它买单吗?人工智能领域,中美两国孰强孰弱?智能工厂3D可视化管理平台美国商会并不认为Facebook涉嫌垄断怎么看马斯克叫停比特币交易特斯拉,对币圈会有什么影响?数据中心概念股数据港云赛智联依米康浙大网新真视通等

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利