纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

SpringBoot整合Mybatisplus

8月16日 风雨峰投稿
  MybatisPlus实战教程1。什么是MybatisPlus1。1什么是mybatisplus
  官网:www。mybatisplus。comguide
  MyBatisPlus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。
  1。2官方愿景
  1。3特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作强大的CRUD操作:内置通用Mapper、通用Service,仅仅通过少量配置即可实现单表大部分CRUD操作,更有强大的条件构造器,满足各类使用需求支持Lambda形式调用:通过Lambda表达式,方便地编写各类查询条件,无需再担心字段写错支持主键自动生成:支持多达4种主键策略(内含分布式唯一ID生成器Sequence),可自由配置,完美解决主键问题支持ActiveRecord模式:支持ActiveRecord形式调用,实体类只需继承Model类即可进行强大的CRUD操作支持自定义全局通用操作:支持全局通用方法注入(Writeonce,useanywhere)内置代码生成器:采用代码或者Maven插件可快速生成Mapper、Model、Service、Controller层代码,支持模板引擎,更有超多自定义配置等您来使用内置分页插件:基于MyBatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通List查询分页插件支持多种数据库:支持MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer等多种数据库内置性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询内置全局拦截插件:提供全表delete、update操作智能分析阻断,也可自定义拦截规则,预防误操作1。4支持数据库mysql、mariadb、oracle、db2、h2、hsql、sqlite、postgresql、sqlserver1。5框架结构
  从图中我们可以看出,使用mybatisplus可以自动起别名,完成java对象与数据库中记录的映射,以及自动创建CRUD,无需再去创建mapper配置文件了。2。快速入门2。1创建springboot项目
  1。引入依赖dependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。2。0versiondependency复制代码注意:不需要在引入mybatis的相关依赖,只引入这一个即可,当然数据库相关的驱动还的显式引入
  因为要连接数据库,所以我们需要引入mysql、druid等依赖,下面是项目中所有的依赖dependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootdevtoolsartifactIdscoperuntimescopeoptionaltrueoptionaldependencydependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdscoperuntimescopedependencydependencygroupIdorg。projectlombokgroupIdlombokartifactIdoptionaltrueoptionaldependencydependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIdscopetestscopedependency!mybatisplusdependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。2。0versiondependency!duid连接池dependencygroupIdcom。alibabagroupIddruidartifactIdversion1。1。19versiondependency复制代码
  为了防止创建maven过慢,我们可以使用阿里巴巴的镜像repositoriesrepositoryidaliyunreposidurlhttp:maven。aliyun。comnexuscontentgroupspublicurlsnapshotsenabledfalseenabledsnapshotsrepositoryrepositoriespluginRepositoriespluginRepositoryidaliyunpluginidurlhttp:maven。aliyun。comnexuscontentgroupspublicurlsnapshotsenabledfalseenabledsnapshotspluginRepositorypluginRepositories复制代码2。在入口类加入注解SpringBootApplicationMapperScan(com。baizhi。dao)扫描dao接口所在的包publicclassSpringbootMybatisplusApplication{publicstaticvoidmain(String〔〕args){SpringApplication。run(SpringbootMybatisplusApplication。class,args);}}复制代码3。编写配置文件spring。datasource。typecom。alibaba。druid。pool。DruidDataSourcespring。datasource。driverclassnamecom。mysql。jdbc。Driverspring。datasource。urljdbc:mysql:localhost:3306mybatisplus?characterEncodingUTF8spring。datasource。usernamerootspring。datasource。passwordrootlogging。level。rootinfologging。level。com。baizhi。daodebug复制代码2。2创建数据库以及表结构DROPTABLEIFEXISTSCREATETABLEuser(idint(11)NOTNULLAUTOINCREMENT,namevarchar(255)DEFAULTNULL,ageint(11)DEFAULTNULL,birtimestampNULLDEFAULTNULL,PRIMARYKEY(id))ENGINEInnoDBDEFAULTCHARSETutf8;SETFOREIGNKEYCHECKS1;复制代码2。3开发实体类
  实体类是什么,mybatisplus就会去数据库中找相同名字的表Datalombok的注解用来生成getset等相关方法AllArgsConstructor有参构造NoArgsConstructor无参构造ToStringtoString方法Accessors(chaintrue)不写默认为false,当该值为true时,对应字段的setter方法调用后,会返回当前对象。publicclassUser{privateSprivateSprivateIprivateD}复制代码2。4开发mapper通用实现importcom。baomidou。mybatisplus。core。mapper。BaseM提供了各种CRUD方法使用mybatisplus的接口增强功能publicinterfaceUserDAOextendsBaseMapperUser{方法不够的话在DAO接口中写方法,然后写相应的mapper配置文件对其做实现如果官网提供的方法不够用的话,可以在这里自己写方法并写相应的mapper配置文件即可}复制代码2。5测试AutowiredprivateUserDAOuserDAO;TestvoidcontextLoads(){ListUserusersuserDAO。selectList(null);System。out。println(users);}3。常用注解说明TableNameTableIdTableField3。1TableName注解描述:用来将实体对象与数据库表名完成映射修饰范围:用在类上常见属性:value:String类型,指定映射的表名resultMap:String类型,用来指定XML配置中resultMap的id值3。2TableId注解描述:主键注解当前对象的哪个属性对应数据库的主键修饰范围:用在属性上常见属性:value:String类型,指定实体类中与表中对应的主键列名type:枚举类型,指定主键生成类型type属性写枚举类IdType。AUTO
  3。3TableField描述:字段注解(非主键)修饰范围:用在属性上常用属性:value:String类型,用来指定对应的数据库表中的字段名el:String类型,映射为原生{。。。}逻辑,相当于写在xml里的{。。。}部分3。0不存在exist如果对象中某一个属性不是数据库表中的字段,我们可以加上这个属性,以免将它作为数据库的列而产生错误boolean是否为数据库表字段true代表是数据库字段,false代表不是Datalombok的注解用来生成getset等相关方法AllArgsConstructor有参构造NoArgsConstructor无参构造ToStringtoString方法Accessors(chaintrue)不写默认为false,当该值为true时,对应字段的setter方法调用后,会返回当前对象。TableName(tuser)指定数据库中与该对象对应的表的名称publicclassUser{TableId(valueid,typeIdType。AUTO)指定该属性与表中的主键字段对应,value不写表中字段为属性名privateSTableField指定该属性与表中哪个字段对应,value属性写字段名,不写表示字段名与属性名一致privateSTableField指定该属性与表中哪个字段对应,value属性写字段名,不写表示字段名与属性名一致privateITableField指定该属性与表中哪个字段对应privateDTableField(existfalse)指定该属性不与表中字段对应privateS}复制代码4。常用方法4。1查询方法
  selectList方法中的参数是用来帮我们做条件查询的,如果为参数为null代表查询所有数据查询所有TestpublicvoidtestFindAll(){ListusersuserDAO。selectList(null);users。forEach(userSystem。out。println(useruser));}复制代码根据主键查询一个TestpublicvoidtestFindOne(){UseruseruserDAO。selectById(1);System。out。println(useruser);}复制代码条件查询条件查询泛型里面写实体对象TestpublicvoidtestFind(){QueryWrapperqueryWrappernewQueryWrapper();第一个字段应该写数据库中表的字段名queryWrapper。eq(age,23);设置等值查询,查询age等于23的queryWrapper。lt(age,23);设置小于查询queryWrapper。ge(age,23);小于等于查询gt大于ge大于等于ListusersuserDAO。selectList(queryWrapper);users。forEach(userSystem。out。println(user));}复制代码li模糊查询TestpublicvoidtestFindAll(){QueryWrapperqueryWrappernewQueryWrapper();like?内容中包含对应的值就可以了likeLeft?以结尾的查询likeRight?以开头的查询queryWrapper。like(username,小);queryWrapper。likeRight(username,小);ListusersuserDAO。selectList(queryWrapper);users。forEach(userSystem。out。println(useruser));}复制代码lilike相当于?likeLeft相当于?likeRight相当于?ul4。2添加方法添加方法TestpublicvoidtestSave(){UserentitynewUser();entity。setAge(23)。setName(小明明)。setBir(newDate());userDAO。insert(entity);}复制代码4。3修改方法基于id修改TestpublicvoidtestUpdateById(){UseruseruserDAO。selectById(1);user。setAge(24);userDAO。updateById(user);}复制代码基于条件修改TestpublicvoidtestUpdate(){UserusernewUser();user。setName(小陈陈);QueryWrapperupdateWrappernewQueryWrapper();updateWrapper。eq(true,age,23);修改age为23的记录userDAO。update(user,updateWrapper);修改age为23的记录的name修改为百知教育}复制代码4。4删除方法基于id删除TestpublicvoidtestDeleteById(){userDAO。deleteById(3);}复制代码基于条件删除TestpublicvoidtestDelete(){QueryWrapperwrappernewQueryWrapper();wrapper。lambda()。gt(age,23);删除年龄大于wrapper。lambda()。eq(true,User::getAge,23);userDAO。delete(wrapper);}复制代码5。MybatisPlus分页查询
  分页查询的原理就是在查询之后加上分页的拦截,所以我们要实现在工厂中注册拦截器类,所以我们实现需要创建一个MybatisPlusConfig类。0。预先配置注意:使用分页查询必须设置mybatisplus提供的分页插件(配置),才能实现分页效果EnableTransactionManagement支持事务管理Configuration代表这是一个配置类MapperScan(com。baizhi。dao)扫描dao接口所在的包publicclassMybatisPlusConfig{分页的拦截器对象BeanpublicPaginationInterceptorpaginationInterceptor(){PaginationInterceptorpaginationInterceptornewPaginationInterceptor();returnpaginationI}}复制代码注意事项:目前分页查询仅仅支持单表查询,不能在表连接时使用分页插件1。分页查询非条件分页查询分页查询TestpublicvoidtestFindPage(){参数1:当前页从第几页开始参数2:当前页显示几条记录不传参的话当前页从第1页开始,当前页显示10条记录IPagepagenewPage(1,2);IPageuserIPageuserDAO。selectPage(page,null);获取总记录数System。out。println(总记录数:userIPage。getTotal());获取指定条件的记录userIPage。getRecords()。forEach(userSystem。out。println(useruser));}复制代码li带条件分页查询TestpublicvoidtestFindAll(){QueryWrapperqueryWrappernewQueryWrapper();queryWrapper。eq(age,23);IPagepagenewPage(1,2);pageuserDAO。selectPage(page,queryWrapper);page。getRecords()。forEach(userSystem。out。println(useruser));}复制代码liul6。MybatisPlus多数据源配置引言
  为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。
  注意:这里我并没有讲解关于主从同步的配置,只是讲了关于多数据源切换的配置,读写分离配置
  6。1引入dynamicdatasourcespringbootstarter依赖dependencygroupIdcom。baomidougroupIddynamicdatasourcespringbootstarterartifactIdversion3。0。0versiondependency复制代码6。2配置数据源
  使用多数据源的话就不需要原来application。properties中的dataSource配置了,使用下面的配置即可spring。datasource。primarymaster指定默认数据源spring。datasource。dynamic。datasource。master。driverclassnamecom。mysql。jdbc。Driverspring。datasource。dynamic。datasource。master。urljdbc:mysql:localhost:3306mybatisplus?characterEncodingUTF8spring。datasource。dynamic。datasource。master。usernamerootspring。datasource。dynamic。datasource。master。passwordrootspring。datasource。dynamic。datasource。slave1。driverclassnamecom。mysql。jdbc。Driverspring。datasource。dynamic。datasource。slave1。urljdbc:mysql:localhost:3306mybatisplus1?characterEncodingUTF8spring。datasource。dynamic。datasource。slave1。usernamerootspring。datasource。dynamic。datasource。slave1。passwordroot6。3创建多个数据库模拟不同mysql服务
  一个mybatisplus数据库,一个是mybatisplus1数据库6。4DS注解作用:用来切换数据源的注解修饰范围:方法上和类上,同时存在则方法注解优先于类上注解。Value属性:切换数据源名称(不是数据库名称,是application。propertis配置文件中的,比如:master、slave1等)不使用这个注解的话默认就是master6。5开发业务层业务接口publicinterfaceUserService{ListfindAll();voidsave(Useruser);}复制代码业务实现类ServiceTransactionalpublicclassUserServiceImplimplementsUserService{AutowiredprivateUserDAOuserDAO;OverrideDS(slave1)publicListfindAll(){returnuserDAO。selectList(null);}Overridepublicvoidsave(Useruser){userDAO。insert(user);}}复制代码6。6测试结果packagecom。importcom。baizhi。entity。Uimportcom。baizhi。service。UserSimportorg。junit。jupiter。api。Timportorg。springframework。beans。factory。annotation。Aimportorg。springframework。boot。test。context。SpringBootTimportjava。util。DSpringBootTestpublicclassTestUserService{AutowiredprivateUserServiceuserSTestpublicvoidtestFindAll(){userService。findAll()。forEach(userSystem。out。println(useruser));}TestpublicvoidtestSave(){UserusernewUser();user。setName(aaa)。setAge(23)。setBir(newDate());userService。save(user);}}
  作者:嘿鱼骨头
  链接:https:juejin。cnpost7109612457923985444
投诉 评论 转载

美国载人龙飞船与国际空间站对接新华社洛杉矶4月27日电(记者谭晶晶)搭载4名宇航员的美国太空探索技术公司龙飞船在经过近16小时飞行后,于美国东部时间27日晚飞抵国际空间站并与之顺利对接。资料图:当地时……与潘晓婷齐名的九球女神,车侑蓝婚后依旧美艳头条创作挑战赛体育明星一向拥有很高的人气,如果是美女,那就更容易吸粉了。当时与潘晓婷齐名的韩国九球天后车侑蓝。都是实力和颜值兼具的女神。车侑蓝球风狠辣,是继费雪之后……张常宁可能赶不上集训,亚运会金牌又不容有失,蔡斌该如何面对?蔡斌就任中国女排主帅的第一时间,谈到了未来新一届国家队的组队思路,他表示,未来肯定是以老中青结合的队伍为主,但中国女排在朱婷还没有手术治疗归期无法确定,颜妮、林莉、刘晓彤又选择……SpringBoot整合MybatisplusMybatisPlus实战教程1。什么是MybatisPlus1。1什么是mybatisplus官网:www。mybatisplus。comguideMyBatis……吃不消的移动营销,强行破密码移动的流量费用高,换成了电信,移动做了8元保号。这个移动号用了有17年,好些地方都登记的是这个号,所以没有注销。然而就在今天,移动对我这个不起眼的小客户开始营销,强行破密……脑供血不足的3大症状,如果出现了,请尽快重视血管清理在我国有3,500万脑血管疾病的患者,脑血管病在人类各种疾病死因的排序当中位居前三,脑血管病具有发病率高、致残率高、死亡率高和复发率高的特点,是中老年人致死和致残的主要疾病。……湖南永州游玩必去的几个地方景点永州是国家森林城市、国家历史文化名城。永州境内通过湘江北上可抵长江,南下经灵渠可通珠江水系,自古代便是重要的交通要塞,是湖南通往广西、海南、粤西及西南各地的门户。浯溪碑林……HiFi音箱分享JBL给你独特的家庭观影体验今天HiFi要和大家分享的音箱是JBL的BAR2。0ALLINONEMKII紧凑型回音壁。这款回音壁的外形尺寸为:614mm90mm56mm,总重1。6kg。紧凑小尺寸,……三人即将离队,中国男篮12人名单出现变化,杜峰将重用赵睿和艾目前中国男篮16名大名单,又出现了新的变化,来自新疆队的锋线球员齐麟因伤病不得不退出国家队,另外还有三人也即将离开国家队。这个国家队的集训只有一个星期左右,并没有太多的时间去训……中国6G取得重要突破!世界各国斥巨资布局研发,6G优势究竟在在华为中央研究院创新先锋座谈会上,当记者问任正非为什么还要拼命研究6G时,任正非表示,每一代的无线通信都发展出了新的能力,过去的15G时代只有通讯能力,而6G是通信感知一体化。……刷掌解锁终端再添丁北京日报客户端实习记者夏骅继密码、指纹和刷脸等解锁方式后,又一项新型解锁方式刷掌解锁被关注。4月12日,汉王科技发布生物特征识别终端黑科技掌静脉核验终端PV10。通过识别……有瑕疵的生活才是美好的央视热播剧《我们的日子》中出演夫妻,李乃文李小冉诠释婚姻与家庭新快报讯记者梁燕芬报道热播剧《我们的日子》中,李乃文和李小冉搭档出演一对在吵吵闹闹中过了一辈子的夫妻。两人近……
晚秋昔日树下(新华全媒)红月亮邂逅天王星(4)儿童性侵案频发,是时候教会孩子们自我保护了演员温碧霞被婆婆嫌弃,为何能立足豪门22年?睡觉前吃营养素维生素B2,坚持一段时间,身体会有什么变化?IQOOZ7对比Z6,LCD党的福音来了!广西南宁五彩春色美大地调色板自卑与超越在二胎家庭里,二宝比大宝情商高,你认同吗?索尼SIE收购游戏开发商SavageGameStudios加女儿取小名特别一点的塞拉斯传统控卫都是传球第一小波特更符合现代控卫的要求2023年,我们拿什么拯救买量市场?
湖人短板在内线?NBA名宿球队还应给詹姆斯这些!钻石证书丢了教师节寄语经典情感美文令我难忘的一个人销售客服工作总结新开餐饮公司工作计划怎样查旅行社定的机票听声音就知道你病了!别不信,声音突变可能是这九种病作怪机枪阵地怎么布置?户外多少度人会造成冻伤几款超具人气的毛领呢大衣哪件大衣才是你的最爱最简单的分类器(一):贝叶斯分类器

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形