游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

通过MybatisPlus实现代码生成器,常见接口实现讲解

  收藏等于学会,赶紧关注吧!前言
  代码自动生成是根据我们的数据表,逆向生成Controller、Service、Mapper接口以及Mapper的xml文件的代码,不用再手动创建文件写通用的注解等,以此来提高开发效率,当然你也可以通过MybatisPlus的代码生成器封装进自己的系统中来二次实现,加入前端实现可视化的代码生成,我们这里实现一个在控制台操作的代码生成器一、什么是代码生成器
  AutoGenerator是MyBatisPlus的代码生成器,通过AutoGenerator可以快速生成Entity、Mapper、MapperXML、Service、Controller等各个模块的代码,而且对单表都有默认实现,极大提升开发效率。二、怎么用2。1、使用步骤引入mybatisplus、generator、velocity、mysql、springbootstarterweb、swagger【非必要】、lombok【非必要】依赖创建代码生成器类,并完成代码生成的相关配置配置多张表,批量生成模块代码2。2、项目引入依赖
  特别说明:MyBatisPlus从3。0。3之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:
  我这里使用maven搭建的springboot项目,项目名为buyetest相关依赖如下:lt;?xmlversion1。0encodingUTF8?projectxmlnshttp:maven。apache。orgPOM4。0。0xmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:maven。apache。orgPOM4。0。0http:maven。apache。orgxsdmaven4。0。0。xsd!依赖自己的父工程parentbuyeartifactIdgroupIdcom。buyegroupIdversion1。0。0versionparentmodelVersion4。0。0modelVersionbuyetestartifactIddependencies!springbootweb依赖dependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIddependency!mybatisplus依赖dependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIddependency!mybatisplus代码生成依赖MyBatisPlus从3。0。3之后移除了代码生成器与模板引擎的默认依赖dependencygroupIdcom。baomidougroupIdmybatisplusgeneratorartifactIddependency!模板引擎依赖,当然您也可以使用Freemarker或者BeetldependencygroupIdorg。apache。velocitygroupIdvelocityenginecoreartifactIddependency!mysql依赖dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIddependency!lombok插件dependencygroupIdorg。projectlombokgroupIdlombokartifactIddependency!swagger3依赖dependencygroupIdio。springfoxgroupIdspringfoxbootstarterartifactIddependencydependenciesproject
  父工程中主要定义依赖了版本,下边贴出父工程的依赖:
  lt;?xmlversion1。0encodingUTF8?projectxmlnshttp:maven。apache。orgPOM4。0。0xmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:maven。apache。orgPOM4。0。0http:maven。apache。orgxsdmaven4。0。0。xsdmodelVersion4。0。0modelVersiongroupIdcom。buyegroupIdbuyeartifactIdpackagingpompackagingversion1。0。0versionmodulesmodulebuyetestmodulemodulespropertiesbuye。version1。0。0buye。versionproject。build。sourceEncodingUTF8project。build。sourceEncodingproject。reporting。outputEncodingUTF8project。reporting。outputEncodingjava。version1。8java。versionswagger。version3。0。0swagger。versionmybatisplus。version3。4。3。4mybatisplus。versionmpgenerator。version3。4。1mpgenerator。versionvelocity。version2。3velocity。versionlombok。version1。18。22lombok。versionproperties!依赖声明dependencyManagementdependencies!SpringBoot的依赖配置dependencygroupIdorg。springframework。bootgroupIdspringbootdependenciesartifactIdversion2。5。6versiontypepomtypescopeimportscopedependency!mybatisplusdependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion{mybatisplus。version}versiondependency!MP的代码生成器dependencygroupIdcom。baomidougroupIdmybatisplusgeneratorartifactIdversion{mpgenerator。version}versiondependency!模板引擎dependencygroupIdorg。apache。velocitygroupIdvelocityenginecoreartifactIdversion{velocity。version}versiondependency!lombok插件dependencygroupIdorg。projectlombokgroupIdlombokartifactIdversion{lombok。version}versiondependency!Swagger3依赖dependencygroupIdio。springfoxgroupIdspringfoxbootstarterartifactIdversion{swagger。version}versionexclusionsexclusiongroupIdio。swaggergroupIdswaggermodelsartifactIdexclusionexclusionsdependencydependenciesdependencyManagementproject
  这里您可以根据自己的需求来创建项目,只需要将这些依赖引入即可,具体依赖见buyetest工程,没有引入任何多余依赖2。2。1、模板引擎依赖
  这里我引入的模板引擎是Velocity(默认也就是无需做配置),MyBatisPlus还支持Freemarker、Beetl,您可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎,如果您也是用Velocity引擎则无需引入以下依赖,如果您使用其他模板引擎,请将上文的maven依赖中的Velocity依赖替换掉。
  Freemarker依赖:dependencygroupIdorg。freemarkergroupIdfreemarkerartifactIdversion版本可以通过mavne中央仓库查询,选择您想用的版本versiondependency
  Beetl依赖:dependencygroupIdcom。ibeetlgroupIdbeetlartifactIdversion版本可以通过mavne中央仓库查询,选择您想用的版本versiondependency2。3、创建代码生成器类
  您在项目创建一个类即可,代码中的注释值得详细看一下,所有的代码解释都在其中,如果还有哪里不明白的评论区见,如果您觉得非常清晰,请给个赞吧。代码如下:packagecom。buye。gen;importcom。baomidou。mybatisplus。annotation。DbType;importcom。baomidou。mybatisplus。annotation。IdType;importcom。baomidou。mybatisplus。generator。AutoGenerator;importcom。baomidou。mybatisplus。generator。config。DataSourceConfig;importcom。baomidou。mybatisplus。generator。config。GlobalConfig;importcom。baomidou。mybatisplus。generator。config。PackageConfig;importcom。baomidou。mybatisplus。generator。config。StrategyConfig;importcom。baomidou。mybatisplus。generator。config。rules。DateType;importcom。baomidou。mybatisplus。generator。config。rules。NamingStrategy;整个流程分为6部分1、创建AutoGenerator代码生成器对象2、做全局配置3、数据源配置4、包配置5、策略配置6、执行代码生成Date2021112711:18Created添甄publicclassBuyeCodeGenerator{publicstaticvoidmain(String〔〕args){1、创建代码生成器AutoGeneratormpgnewAutoGenerator();2、创建全局配置对象1)、可以通过该对象配置生成文件的输出位置,类上的Author注解等2)、在下边我们会使用一些常用的配置GlobalConfiggcnewGlobalConfig();获取本项目的项目路径,不过该路径在有些情况下会出现问题,所以一般在设置文件输出路径时我会写绝对路径StringprojectPathSystem。getProperty(user。dir);System。out。println(projectPath);设置生成文件的输出路径,这里前部分使用的一个绝对路径,后部分是一个mavne项目的目录结构当然您也可以D:codebuyebuyetestsrcmainjava这样的一个完整绝对路径gc。setOutputDir(D:codebuyebuyetestsrcmainjava);设置生成文件(也就是类)上方的Author注解gc。setAuthor(添甄);生成后是否打开资源管理器gc。setOpen(false);重新生成时文件是否覆盖gc。setFileOverride(false);mp生成service层代码,默认接口名称第一个字母有I,去掉Service接口的首字母Igc。setServiceName(sService);主键策略,这里的策略和您的实际项目需要设置在https:blog。csdn。netqq36386908articledetails121465444文章中讲过主键策略了gc。setIdType(IdType。ASSIGNID);定义生成的实体类中日期类型gc。setDateType(DateType。ONLYDATE);开启Swagger2模式gc。setSwagger2(true);将配置加入到代码生成器中mpg。setGlobalConfig(gc);3、数据源配置DataSourceConfigdscnewDataSourceConfig();dsc。setUrl(jdbc:mysql:localhost:3306buye?serverTimezoneGMT2B8);dsc。setDriverName(com。mysql。cj。jdbc。Driver);dsc。setUsername(root);dsc。setPassword(root);dsc。setDbType(DbType。MYSQL);将数据源设置仅代码生成器中mpg。setDataSource(dsc);4、包配置PackageConfigpcnewPackageConfig();模块名pc。setModuleName(mp);pc。setParent(com。buye);pc。setController(controller);pc。setEntity(entity);pc。setService(service);pc。setMapper(mapper);将包配置设置进代码生成器中mpg。setPackageInfo(pc);5、策略配置StrategyConfigstrategynewStrategyConfig();设置表名,根据数据库表生成实体类和其他文件strategy。setInclude(sysuser);数据库表映射到实体的命名策略strategy。setNaming(NamingStrategy。underlinetocamel);生成实体时去掉表前缀strategy。setTablePrefix(pc。getModuleName());数据库表字段映射到实体的命名策略strategy。setColumnNaming(NamingStrategy。underlinetocamel);lombok模型Accessors(chaintrue)setter链式操作strategy。setEntityLombokModel(true);restfulapi风格控制器strategy。setRestControllerStyle(true);url中驼峰转连字符strategy。setControllerMappingHyphenStyle(true);将策略设置仅代码生成器mpg。setStrategy(strategy);6、执行mpg。execute();}}2。3。1、执行测试
  其中有数据表如下:
  运行代码:
  上边我们仅仅是实现了单表,我们一般的项目也在几十张,甚至百张以上的表,一个一个生成起步很慢,我们只需要将代码生成类中的策略配置中的strategy。setInclude(sysuser,sysdept);配置需要生成代码的表。
  setInclude(String。。。include)这个函数的参数是一个可变参数,并且将数据存储到一个Set集合中筛选掉用户不小心传入的重复数据。
  注意:这里并不是是说一次性生成所有的表,我们还配置了模块记得吗?根据模块去生成就可以啦
  以上就是我们的代码生成的具体操作,在项目中如果能用就用,毕竟可以省略掉很多重复的工作。无论是单表还是多表都给您介绍到。我们没有结束,接下来再翻一翻生成的代码深入理解一下。三、深挖生成的代码
  注意:这里代码生成与代码生成类中的配置息息相关。3。1、公共部分
  每个类上都有的公共部分
  2。4、使用其他模板引擎
  如果您要使用其他模板引擎:请替换模板引擎依赖在代码生成类中配置模板引擎
  默认的就够用啦,别瞎折腾了setfreemarkerenginegenerator。setTemplateEngine(newFreemarkerTemplateEngine());setbeetlenginegenerator。setTemplateEngine(newBeetlTemplateEngine());3。2、实体类
  知道为什么引入lombok和swagger了吧3。3、Mapper接口
  3。4、mapper的xml文件
  这个文件空空如也,仅仅有一个namespace配置
  3。5、Service接口
  这里仅仅继承了IService接口,该接口是MyBatisPlus的,稍后会和BaseMapper、以及Service实现类中继承的ServiceImpl一起介绍
  3。6、Service实现类
  之前我们的实现类也就是实现接口,但是这里他还帮我们继承了一个ServiceImpl类
  3。7、Controller
  四、MyBatisPlus基础接口
  mybatisplus中的源码都是中文注释,阅读门槛较低,推荐您阅读一遍,因篇幅问题,以下仅贴出部分代码4。1、BaseMapper
  这个是每个Mapper接口都继承的接口,里边拥有单表的所有CRUD实现、批量操作以及分页查询,部分代码截图如下:
  4。2、IService接口
  该接口为Service的顶级接口,进一步封装CRUD采用get【查询单行】remove【删除】list【查询集合】page【分页】的前缀命名方式区分Mapper层避免混淆
  4。3、ServiceImpl实现类
  该实现类接受两个泛型对应模块的Mapper接口对应模块的实现类
  可以将Mapper直接进行注入,并且提供getBaseMapper方法提供mapper的获取,方便别的service层调用,并且对sqlSession、单表的CRUD操作做了默认实现,酸爽无比。五、测试代码
  接下来在Controller中写一个添加供您参考,其余的操作都一样packagecom。buye。mp。controller;importcom。buye。mp。entity。SysUser;importcom。buye。mp。service。SysUserService;importcom。sun。org。apache。xpath。internal。operations。Bool;importorg。springframework。beans。factory。annotation。Autowired;importorg。springframework。web。bind。annotation。PostMapping;importorg。springframework。web。bind。annotation。RequestBody;importorg。springframework。web。bind。annotation。RequestMapping;importorg。springframework。web。bind。annotation。RestController;importjava。util。HashMap;importjava。util。Map;p用户信息表前端控制器author添甄RestControllerRequestMapping(mpsysuser)publicclassSysUserController{AutowiredprivateSysUserServiceuserService;添加用户paramsysUserreturnPostMappingpublicMapString,ObjectaddUser(RequestBodySysUsersysUser){添加,直接调用service,因为有默认实现,所以其他地方就不用写代码了booleansaveCountuserService。save(sysUser);MapString,ObjectmapnewHashMap();if(saveCount){map。put(code,200);map。put(message,添加用户成功);}else{map。put(code,500);map。put(message,添加用户失败);}returnmap;}}
  注意:别忘记添加Mapper扫描
  因为从Service到Mapper都已经有了默认实现,我们在单表操作时仅编写Controller即可,如果需要条件查询做判断,可以使用Wrapper是吧!总结
  不知不觉写了一万三千多字,本篇主要介绍了:MyBatisPlus代码生成器的配置和开发,并且实现单量和批量的代码生成讲解了生成代码的结构,和引入依赖的说明通过翻阅生成的代码,为您讲解MyBatisPlus的常见接口以及它的实现原理通过一个添加案例实现MyBatisPlus生成代码的具体应用。
  如果觉得不错记得关注,点赞哦!!持续更新编程文章

当我变老后,冬天一定要像她们一样打扮自己,这才是真正的优雅随着时尚发展,老年人在穿衣打扮上也一改老气乏味,用优雅时尚的打扮来重塑大众对她们的固有印象,也会借助会打扮来凸显出自身高级品味,展现出年轻人难以企及的魅力。这一点在很多中……又走一个!TVB知名男星突然宣布离巢,加入公司20年不受捧本文编辑剧透社:issac未经授权严禁转载,发现抄袭者将进行全网投诉又走一个!现年44岁的TVB知名男星黄嘉乐,近日透过社交媒体发文宣布离巢。由于最近这两年,……国产芯片终于破冰,打破美企数十年垄断,重要程度不比华为低一直以来,我国都被冠以缺芯少混的尴尬处境,因为芯片和系统两大领域我国基本是属于空白期,反观美、日、韩等国在半导体方面获得了极高的成就。系统领域也同样如此,比如安卓、IOS、Wi……除夕桌上必备的六道吉祥菜,照着菜谱做端上桌,一家人夸你是大厨再有短短一个多月,就要到除夕夜了,你家里有人在对除夕夜,进行准备吗?每年的年三十晚,一家人坐在一起吃着团圆饭,想想都特别热闹,但是由于疫情的影响,你今年是就地过年,还是回家过年……2年4000万,快船公牛3换1交易出炉,小卡乔治可以安心养伤近日,美媒NBAANALYSISNETWORK建议快船与公牛达成一笔3换1的交易,公牛目前已经遭受了4连败,队内有多名球员遭遇伤病(琼斯、朗佐、卡鲁索、格林、拉文、帕威),他们……累了,就歇歇,抱抱自己2021年已经成为过去,2022年已经开始,不知道2021的你,是否过得好?但是在新的一年里,希望你可以开心,累了,就歇歇,然后抱抱自己,告诉自己,你可以,你也很好!粗茶……再见世锦赛!中国举重队集体退出,上届豪取29金,健康比奖牌重大家好,我们今天来聊聊中国举重队。本月17号,2021年举重世锦赛将在乌兹别克斯坦首都塔什干举行,这是下一届奥运会周期的首个世界大赛,中国举重队运动员们原本想借此开个好头。不过……美太空军寻求三种快速跟踪并清理太空碎片的新技术【据美国《空军杂志》11月29日报道】美太空军太空创新工场正在努力推动轨道优先项目,通过采购商业服务,在未来2年内进行主动碎片清除的在轨演示。目前太空创新工场已制定3种不同技术……魔兽世界全职业PVP教学攻略,你改变不了什么,但是游侠说可以哈喽大家好,我是浅醉半生。最近几期我打算用图文,出一个关于pvp方面的系列。不知道大家有没有发现到,网上关于这一方面的题材其实很少。甚至玩了很长时间的老玩家。对于pvp也没有一……1995年辽宁队降级时候的主教练李树斌现在在干什么?1995年辽宁队降入甲B,谁第一个先哭的,恐怕没有人给出答案。不过当时辽宁队的主教练李树斌绝对在其中,而且在新闻发布会上,李树斌被大家质疑和口诛笔伐的时候,是崔大林出面帮李树斌……让库里在全明星赛打替补,莫兰特首发,巴克利快闭嘴吧近期名嘴巴克利表示,此前他说过库里应该是全明星先发,莫兰特出任替补,但如今他改变主意了。如果让他来投票的话,莫兰特毫无疑问会成为全明星先发,而库里该出任替补。NBA吐槽大会……开服首月23亿流水,手游赚钱方式有哪些?最近最火的游戏大概就是网易的《哈利波特:魔法觉醒》了,游戏开服至今席卷了全球,震惊了外国哈迷,没想到中国也有这么多哈利波特的粉丝。这款游戏无论是从玩法还是画风来说都非常优……
盛夏清凉装让你美丽又优雅下了这么多天的雨,天气一直低温,这两天可下晴天了,大街上美女也穿上了各种各样的夏季清凉装。我也把夏季的裙子做了整理,但我最钟意的夏季面料还是真丝,尤其真丝长裙。因为上身实在是舒……葡萄籽能直接嚼着吃吗?不建议这样吃葡萄籽是非常常见的,日常生活中就很多,下面5号网的小编为你们介绍葡萄籽能直接嚼着吃吗?不建议这样吃。葡萄籽能直接嚼着吃吗如葡萄籽原封不动的吞进去又会排除体外,什么成分也吸……everything如何用作快速启动工具理念:利用该软件设置中的【首页】自定义搜索,也就是首次打开everything后使其自动运行一条初步检索命令,把所有程序快捷方式列出来。windows开始菜单文件夹一般包……苏德战争爆发,日本为何不与德联手进攻苏联,而是作死挑战美国?1941年6月22日,苏德战争爆发,这场战争的胜负可以说是决定了整个世界的命运。一旦苏联获胜,作为轴心国主力的德国将走向负面,法西斯阵营将支离破碎,但倘若德国胜利,侵吞掉……胸罩款式分类的有哪些?按文胸包裹程度分类的有什么?现在很多女生都知道胸罩的正确穿法吗,正确有效的穿戴胸罩不仅可以预防疾病,还可以有效的丰胸。那么胸罩款式的有哪些?文胸包裹程度分类的有什么?胸罩分为哪几类胸罩是保护乳……小敏家开播,黄磊中年浪漫,乔卫东宋倩也不甘寂寞由黄磊、周迅、秦海璐等人主演的《小敏家》在芒果台上星播出,这部作品是以中年人感情及生活为主线的都市情感剧,导演是和黄磊合作多年,有着《小欢喜》《小别离》等作品的汪俊,同时黄磊担……传世群英让你回到当初特色化:1:安卓和苹果区数据信息完成了互通2:可以武器装备随便买卖3:诱惑之光,化身为蝙蝠,瞬移全是有的,别的技能也都完成了所有改进4:武器装备相对应保……散文慢品人间烟火色,闲观万事岁月长作者:子墨北方的冬天是寒冷的,风冷冷的,所到之处,皆是寒意。在光阴的路上,在季节的岸边,在萧瑟的风景里,素描草木,布置出一些薄雪与霜色。我踮起脚尖,努力地让自……卫生棉条可以过夜吗?卫生棉条可以用多久?卫生棉条现在在国内也越来越普及,很多人都开始接受它的存在。可是却并不是很了解它,卫生棉条可以过夜吗?卫生棉条可以用多久?卫生棉条可以过夜吗你也许是听过戴棉条过夜可能会引起……比豆腐还嫩!自制酸奶蛋糕,配方和秘诀都给你,外面买不到事情是这样的。昨天收到粉丝私信,说希望出一期有芝士蛋糕口感,但是又不加芝士的蛋糕。我翻找了一下自己的食谱,觉得最符合的就是这款柠檬酸奶蛋糕啦。这款蛋糕非常的蓬软,但是入口湿润绵……年轻人,如果你没有准备好就不要生孩子我最近看电视,看到一个母亲把自己儿子告上法庭,原因就是儿子和儿媳自己不带孩子,把孩子交给她带。前一段还看到有一对打工的年轻夫妻生了孩子后不会带,干脆把孩子送到派出所。在这里我们……星球各地形稀有矿石据深岩集团的高级相关人员说,第一批登陆鹰四号的不是目前的矿工和士兵,而是一群来自矮人帝国的科学家和探险家。他们都是明星区各行各业的精英。虽然这次探险伴随着一些中层保守派的反对,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网