专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

学会了MybatisPlus,代码开发效率提高了10倍

  1。Mybatis存在的痛点
  我们知道MyBatis是一个基于java的持久层框架,它内部封装了jdbc,极大提高了我们的开发效率。
  但是使用Mybatis开发也有很多痛点:每个Dao接口都需要自己定义一堆增删改查方法。Desc:UserDao接口Author:公众号:知否技术date:下午7:43202257publicinterfaceUserDao{获取所有用户信息ListUsergetUserList();根绝id获取用户信息UsergetUserById(intid);新增用户信息booleanadd(Useruser);更新用户信息booleanupdate(Useruser);删除用户信息booleandelete(intid);}
  2。每个Mapper文件都需要写一堆基本的增删改查语句。
  3。如果查询的列表需要分页,我们还需要给查询方法封装成分页对象。
  你可能会说:Mybatis还能有痛点?用着多方便!
  对于小项目而言,用着确实还行。但是遇到大项目,光Dao接口都有几百个,如果还要手动定义一堆增删改查方法和sql语句,那也很浪费时间。
  那有没有这样一个框架:
  1。封装了Mybatis,自带CRUD方法,我们不需要自己定义CRUD方法。
  2。提供各种查询方法,不需要在mapper文件中写一些基础的sql语句。
  3。封装了分页功能,让分页查询无比丝滑。
  有的,MybatisPlus闪亮登场。
  2。邂逅MybatisPlus
  官网:https:baomidou。com
  MybatisPlus是在Mybatis原有功能的基础上进行了封装。它不做改变,而是增强了Mybatis的功能。
  我们不用写mappe。xml,直接调用它的API就能完成CRUD和各种查询操作。
  而且它自带分页插件等一些高级功能,极大地提高了我们的开发效率。3。入门案例
  开发环境:开发工具:IDEA构建工具:Maven数据库:MySQL项目框架:SpringBoot
  1。新建SpringBoot项目
  2。引入依赖!mybatisplus依赖dependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。4。0versiondependency!mysql驱动dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdscoperuntimescopedependency!testdependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIdscopetestscopedependency
  3。创建数据库表
  user表:CREATETABLEuser(idbigintNOTNULLAUTOINCREMENTCOMMENTid,namevarchar(20)CHARACTERSETutf8mb4COLLATEutf8mb4generalciDEFAULTNULLCOMMENT姓名,ageintDEFAULTNULLCOMMENT年龄,PRIMARYKEY(id)USINGBTREE)ENGINEInnoDBAUTOINCREMENT1508421137384648706DEFAULTCHARSETutf8mb4COLLATEutf8mb4generalciROWFORMATDYNAMIC;
  4。实体类publicclassUser{TableId(valueid,typeIdType。ASSIGNID)privateLongid;privateStringname;privateintage;publicUser(Stringname,intage){this。namename;this。ageage;}publicLonggetId(){returnid;}publicvoidsetId(Longid){this。idid;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this。namename;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this。ageage;}}
  5。修改application。ymlserver:port:8082servlet:contextpath:mybatisplusdemo数据源配置spring:datasource:username:rootpassword:12345678url:jdbc:mysql:localhost:3306ssm?allowPublicKeyRetrievaltrueuseSSLfalsedriverclassname:com。mysql。cj。jdbc。Driver
  6。新建UserMapper接口
  注:
  (1)因为mybatis规定:mapper。xml文件的名字要和接口名字一样,所以很多人习惯将Dao接口命名为xxxMapper。
  (2)BaseMapper是MybatisPlus内置的接口,它包含基本的CRUD方法。
  7。启动类添加MapperScan注解
  8。测试SpringBootTestpublicclassMybatisPlusDemoApplicationTests{ResourceprivateUserMapperuserMapper;TestvoidtestMybatisPlus(){for(inti18;i20;i){UserusernewUser(王小波i,i);userMapper。insert(user);}}}
  9。总结
  我们发现只要继承MybatisPlus的BaseMapper,就能完成基本的增删改查操作,非常方便。
  4。基本增删改查
  1。新增UserusernewUser(王小波,19);userMapper。insert(user);
  2。编辑
  根据id更新数据introwsuserMapper。updateById(user);if(rows0){System。out。println(更新成功);}
  3。删除
  根据主键删除信息userMapper。deleteById(152635612);
  根据map条件删除信息MapString,ObjectparamnewHashMap();param。put(age,18);introwsuserMapper。deleteByMap(param);if(rows0){System。out。println(删除成功!);}
  根据id集合批量删除ListIntegeridsStream。of(110,112,113,115)。collect(Collectors。toList());introwsuserMapper。deleteBatchIds(ids);if(rows0){System。out。println(删除成功!);}
  4。查询
  根据id查询UseruseruserMapper。selectById(152382374);
  根据map条件查询MapString,ObjectparamnewHashMap();param。put(age,18);ListUseruserListuserMapper。selectByMap(param);
  根据id集合批量查询ListIntegeridsStream。of(110,112,113,115)。collect(Collectors。toList());ListUseruserListuserMapper。selectBatchIds(ids);5。构造器
  MybatisPlus提供了查询构造器和更新构造器用来生成带有where条件的sql语句。
  (1)封装查询条件的构造器:QueryWrapper
  常用查询条件:
  等于:eqQueryWrapperUseruserWrappernewQueryWrapper();查询名字是张三的用户userWrapper。eq(name,张三);ListUseruserListuserMapper。selectList(userWrapper);
  不等于:neQueryWrapperUseruserWrappernewQueryWrapper();userWrapper。ne(name,张三);查询名字不是张三的用户ListUseruserListuserMapper。selectList(userWrapper);
  模糊查询:likeQueryWrapperUseruserWrappernewQueryWrapper();模糊查询userWrapper。like(name,张);ListUseruserListuserMapper。selectList(userWrapper);
  降序:orderByDescQueryWrapperUseruserWrappernewQueryWrapper();模糊查询并根据number倒序userWrapper。like(name,张)。orderByDesc(number);ListUseruserListuserMapper。selectList(userWrapper);
  升序:orderByAscQueryWrapperUseruserWrappernewQueryWrapper();模糊查询并根据number降序userWrapper。like(name,张)。orderByAsc(number);ListUseruserListuserMapper。selectList(userWrapper);
  其他常用的条件可以去官网查看相关文档,这里不再过多赘述:https:baomidou。compages10c804in
  (2)封装更新条件的构造器:UpdateWrapper
  UpdateWrapper的where条件和QueryWrapper的一样,只不过需要set值。UpdateWrapperUseruserWrappernewUpdateWrapper();userWrapper。set(name,王小波)。set(age,22)。eq(name,张三);6。通用Service
  MybatisPlus中有一个通用的接口Iservice和实现类,封装了常用的增删改查等操作。
  1。新建service和实现类
  UserServiceDesc:Author:公众号:知否技术date:下午9:572022511publicinterfaceUserServiceextendsIServiceUser{}
  UserServiceImplDesc:Author:公众号:知否技术date:下午9:572022511ServicepublicclassUserServiceImplextendsServiceImplUserMapper,UserimplementsUserService{}
  2。测试
  我们发现该IService接口封装了一些常用的方法,极大地提高了我们的开发效率。7。常用注解
  1。TableId
  MybatisPlus会默认将实体类中的id作为主键。
  TableId表示id的生成策略,常用的有两种:
  (1)基于数据库的自增策略
  (2)使用雪花算法策略随机生成
  2。TableName
  如果实体类和数据库的表名不一致,可以使用这个注解做映射
  例如:
  3。TableField
  当表属性和实体类中属性名不一致时,可以使用这个注解做映射:
  8。分页
  MybatisPlus内部封装了分页插件,只用简单配置一下就能实现分页功能。
  1。配置类Desc:Author:公众号:知否技术date:下午9:312022511ConfigurationMapperScan(com。zhifou。mapper)publicclassMybatisPlusConfig{BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptornewMybatisPlusInterceptor();interceptor。addInnerInterceptor(newPaginationInnerInterceptor(DbType。MYSQL));returninterceptor;}}
  2。测试TestvoidtestMybatisPlus(){intcurrent1;intsize10;PageUseruserPagenewPage(current,size);获取分页数据ListUserlistuserPage。getRecords();list。forEach(user{System。out。println(user);});PageUserpageuserMapper。selectPage(userPage,null);System。out。println(当前页:page。getCurrent());System。out。println(每页条数:page。getSize());System。out。println(总记录数:page。getTotal());System。out。println(总页数:page。getPages());}9。代码生成器
  MybatisPlus可以帮助我们自动生成controller、service、dao、model、mapper。xml等文件,极大地提高了我们的开发效率。
  1。引入依赖!代码生成器dependencygroupIdcom。baomidougroupIdmybatisplusgeneratorartifactIdversion3。5。1versiondependencydependencygroupIdorg。freemarkergroupIdfreemarkerartifactIddependency
  2。代码生成器工具类publicclassCodeGenerator{publicstaticvoidmain(String〔〕args){连接数据库FastAutoGenerator。create(jdbc:mysql:localhost:3306ssm?allowPublicKeyRetrievaltrueuseSSLfalseuseUnicodetruecharacterEncodingUTF8serverTimezoneUTC,root,123456)。globalConfig(builder{builder。author(知否技术)设置作者。fileOverride()覆盖已生成文件设置日期时间。dateType(DateType。ONLYDATE)。outputDir(D:WorkSpaceideamybatisplusdemosrcmainjava);指定输出目录})。packageConfig(builder{builder。parent(com。zhifou)设置父包名。pathInfo(Collections。singletonMap(OutputFile。mapperXml,D:WorkSpaceideamybatisplusdemosrcmainresourcesmapper));设置mapperXml生成路径})。strategyConfig(builder{builder。addInclude(tuser)设置需要生成的表名。addTablePrefix(t);设置过滤表前新增数据,自动为创建时间赋值IFillcreateFillnewColumn(createddate,FieldFill。INSERT);IFillupdateFillnewColumn(updateddate,FieldFill。UPDATE);builder。entityBuilder()设置id类型。idType(IdType。ASSIGNID)开启Lombok。enableLombok()开启连续设置模式。enableChainModel()驼峰命名模式。naming(NamingStrategy。underlinetocamel)。columnNaming(NamingStrategy。underlinetocamel)自动为创建时间、修改时间赋值。addTableFills(createFill)。addTableFills(updateFill)逻辑删除字段。logicDeleteColumnName(isdeleted);Restful风格builder。controllerBuilder()。enableRestStyle();去除Service前缀的Ibuilder。serviceBuilder()。formatServiceFileName(sService);mapper设置builder。mapperBuilder()。enableBaseResultMap()。enableBaseColumnList();})固定。templateEngine(newFreemarkerTemplateEngine())使用Freemarker引擎模板,默认的是Velocity引擎模板。execute();}}
  关键点:
  (1)配置数据库连接信息。
  自动生成代码需要连接数据库
  (2)指定输出目录,这里直接设置你项目的目录,到时候不用赋值粘贴了。
  (3)设置父包名。
  (4)设置表名
  然后右键运行,代码就会自动生成。10。application。yml配置MybatisPlusmybatisplus:globalconfig:dbconfig:columnunderline:true驼峰形式logicdeletefield:isDeleted全局逻辑删除的实体字段名logicdeletevalue:1逻辑已删除值(默认为1)logicnotdeletevalue:0逻辑未删除值(默认为0)dbtype:mysqlidtype:assignidid策略tableprefix:t配置表的默认前缀mapperlocations:classpath:mapperMapper。xmlmapper文件位置typealiasespackage:com。zhifou。entity实体类别名configuration:logimpl:org。apache。ibatis。logging。stdout。StdOutImpl日志:打印sql语句11。完整代码链接:https:pan。baidu。coms1nlRjKOWs3ON53Dh1XXLKGw提取码:9un712。遇到的坑
  1。传参为0时,查询语句失效。
  例如传递的age为0,查询就会失效selectidgetUserresultTypeuserselectid,name,age,sexfromuserwhereiftestage!nullandage!age{age}ifwhereselect
  原因:判断int是否为空只要!null就行了,如果加上type!,0会被转为null。
  2。MybatisPlus更新字段为null失败
  解决办法:TableField(updateStrategyFieldStrategy。IGNORED)privateStringname;
  该注解会忽略为空的判断,
  链接:https:juejin。cnpost7097006142836408327

售价16。89万元,长安深蓝SL03增程版解析,最高续航1200km说到新能源车型,很多人第一印象就是纯电版本,纯电车型虽然近几年的技术进步比较大,但是长途出行,纯电车型的续航里程一直都是让人担忧的,相比纯电车型,增程版车型在续航方面,更加有保障,致全市孕产妇姐妹们的一封信亲爱的孕产妇姐妹们你们好!首先祝贺您迈入了一段幸福的人生旅程,即将成为宝宝妈或刚刚成为宝宝妈!作为准妈妈和新手妈妈,有很多孕育宝宝的事情要做,在这段美好旅途中遭遇了新冠肺炎疫情,让一部书写在中原大地上的女性史诗河南作家邵丽长篇小说金枝(全本)出版大河网讯(记者莫韶华)家族故事革命故事婚姻故事,伦理爱情血缘亲情这些复杂因素缠绕在女性捍卫家庭冲破命运自我更新的成长历程中,终以不可遏制的力量使中原千年故土新生。近日,著名作家河南江西九江为军休干部贴心服务解难题刚看到社区通知,正愁打疫苗的事儿,所里的电话就来啦,真是解决了大问题!打了疫苗,心里就踏实了83岁的军休干部陈筱玉高兴地说。连日来,九江市军休所浔庐先锋队的党员和社工们穿梭在两百多那些渐渐被遗忘的老物件,80后基本认不全,70后应该全都认识在我们的日常生活,有许多的老物件在渐渐的被遗忘,有些不再使用了,有些已经彻底消失在了历史的长河中。今天,小编带着大家一起来盘点一下那些渐渐被遗忘的老物件,估计很多的80后基本认不全周朝人对生育的看重,让婚礼变成了求子仪式,也摧毁了女性的地位周朝对于中华文化的发展,产生了极为深远的影响。其也被认为是中华文明的奠基人,直到今天我们的许多生活习惯和文化理念中,依然有周人的影子。其中周朝的宗法制度,对中国人影响最为深刻。至今欧阳修一个嗜酒如命的理想主义公务员他天生是一个摇笔杆的料。白天,他起草各种公文,晚上,他创作大量诗词。慢慢地,他出名了,无数记者抢着采访他他笑笑说,哪里有什么天才,我只是把别人喝茶的时间,用来喝酒了。多数人识得他,杀神白起的成名之战伊阙之战垂沙之战后,楚国被打残,已无法对秦国构成威胁。于是乎秦国企图进一步攻占韩国魏国土地,但又惧怕齐国干涉,所以被迫暂缓行动,等待时机。后因齐国孟尝君出奔魏国,并担任相国主持进攻齐国,齐湖南小伙身高1。9米,长相酷似朱元璋的画像,自称是朱元璋的后代这位湖南的小伙子因为长得酷似朱元璋的画像而走红,还以模仿朱元璋而做起了网红。他还说自己身高1。9米,自称自己就是朱元璋的子孙后代,还打算以网红的方式还原朱元璋的样貌形态从而光宗耀祖权利的吸引713年,李隆基一怒之下,要赐太平公主死罪,太上皇得知后苦苦哀求儿子,朕就这一个妹妹,饶她一命吧!说到历史上最受尽荣宠的女人,非太平公主莫属。她本人是嫡公主,父亲是皇帝母亲是皇帝四葛俊武张福柱民国年间神池的传染病逸闻(外一篇)聆听李启明方山芦尚官等老年人传说,民国七年(1918年),来自包头和萨拉齐的传染病鼠疫沿黄河而下,窜入清水河县,经红门口入偏关,绕陝西,经大沟口入河曲,再由河曲偏关向东南经三岔堡传
手脚冰凉腰怕冷,中医一方缓解黄某男,38岁,主要是手脚怕冷,特别是下肢较重。他的求医史可谓是坎坷,本来是腰部怕冷,经过调理后反而从腰下到了脚,最后现在手脚也怕冷。经了解,前医给他辩为肾阳虚,用了右归金贵肾气等医美美白产品均无效,中医内调治好黄褐斑含药方黄褐斑是皮肤病黄褐斑是一种常见的色素增加性皮肤病。发病原因包括但不限于妊娠肝病肺结核慢性酒精中毒口服避孕药等。其发病机制是黑素细胞活性增加所致。临床上寻求治疗的多为中青年女性。中医福建投资集团福船集团迎来新任总经理福建两家省属国企迎来新任总经理。一家是福建省投资开发集团有限责任公司(以下简称福建投资集团),另一家是福建省船舶工业集团公司(以下简称福船集团)。两家总经理分别空缺了7个月3个月。广州市天河区有一家新商场,就在地铁站附近,刚开业就已经很热闹这里是刘小顺的旅行和生活研究所。来过广州旅游的朋友,应该都知道,现在广州最有人气经济最发达的区域就是天河区,也是广州新的市中心所在,有很多热门的商场与购物中心。最近,我发现广州市天双十一哪些旗舰机值得入手?这三款下半年表现出色,选大内存更香眼看十月已经过半,按照往年的经验来看,双十一的预售活动已经不远了。实际上,今年双十一活动来得还算早,动作比较快的京东在10月20号晚就开始了,大家记得设置好闹钟提醒预售等等!一般情辽宁男篮会以9连胜的战绩完成第一阶段的比赛吗?辽宁男篮今年第一阶段的比赛中阵容不整,张镇麟的因伤缺阵,刘志轩去了江苏,王化东去了福建队,以及大外援不在,只能以一名小外援出战。接下来比赛要对阵的分别是,广州龙狮山西队福建队吉林队IBM研究院院长量子计算大爆发将在十年内到来摘要IBM研究院院长达里奥吉尔(DarioGil)教授正处于量子计算革命的最前沿,这场革命即将从根本上改变我们的世界。在此次独家专访中,他解释了实现这个梦想的挑战是什么,为什么你需关于新型致命毒株的思考磨牙小柳蛇2分钟前关于开发致命毒株的思考美国波士顿大学研究人员在实验室,通过将奥密克戎毒株与新冠病毒原始毒株组合,开发出新型的新冠病毒毒株,用作试验的小白鼠感染该毒株后,高达80死等等党彻底输了!苹果iPad全系涨价为了衬托入门款?不久前,苹果直接跳过发布会,在官网上更新了两款产品,分别是第十代iPad与iPadPro2022。新款平板电脑售价都不低,比前代贵了不少。随后,小雷在苹果官网发现,苹果全系iPad外媒苹果的麻烦接踵而来,巅峰已过提到智能手机,相信大家第一时间就会想到苹果,想到iPhone手机。不可否认,在乔布斯时代,苹果手机就是神一般的存在。iPhone手机的出现,重新定义了智能手机,且引领了整个行业的发2046床笫之欢过后,他穿衣离开,给她钱,原来他只是逢场作戏王家卫就像是个诗人看他的电影,就好像在看一部诗作,那是人们难以言喻的情感纠结迷失找寻解脱的过程。他的电影里,没有一定的好坏善恶,有的也只是与我们芸芸众生非常相识的情感失落以及执迷。
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网