应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

SpringBoot搭建SSM项目的完整过程!

  01、新建一个springboot项目
  选择依赖和版本
  SpringBoot整合lombok
  lombok是一个快速生成javabean的一个工具工程和生成日志的工具。未来给我们提供了很大的遍历。
  需要在idea中安装插件和pom。xml中进行依赖才可以使用生效:
  pom。xml依赖如下:dependencygroupIdorg。projectlombokgroupIdlombokartifactIdoptionaltrueoptionaldependency复制代码SpringBoot在依赖的过程,为什么有的要加版本号,有的不加?dependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebartifactIddependencydependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion8。0。27versiondependencydependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。5。2versiondependencydependencygroupIdorg。projectlombokgroupIdlombokartifactIdoptionaltrueoptionaldependency复制代码mysqlmybatisplus都不属于springboot父工程管理,自然必须把自己的version加上去!SpringBoot整合MybatisPlus和数据源
  1、在pom。xml中依赖如下:dependencygroupIdmysqlgroupIdmysqlconnectorjavaartifactIdversion8。0。27versiondependencydependencygroupIdcom。baomidougroupIdmybatisplusbootstarterartifactIdversion3。5。2versiondependency复制代码
  2、准备一个数据库表kssuserCREATETABLEkssuser(idintNOTNULLAUTOINCREMENT,usernamevarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb40900aiciDEFAULTNULL,passwordvarchar(255)DEFAULTNULL,realnamevarchar(255)CHARACTERSETutf8mb4COLLATEutf8mb40900aiciDEFAULTNULL,genderintDEFAULTNULL,birthdaydateDEFAULTNULL,createtimedatetimeDEFAULTNULL,updatetimedatetimeDEFAULTNULL,PRIMARYKEY(id))ENGINEInnoDBAUTOINCREMENT2DEFAULTCHARSETutf8mb4COLLATEutf8mb40900aici;复制代码
  3、配置数据源和mybatis配置
  在项目的resource目录下的application。yaml配置如下:server:port:8080数据源配置spring:application:name:pugspringbootssmdatasource:type:com。zaxxer。hikari。HikariDataSourcedriverclassname:com。mysql。cj。jdbc。Driverurl:jdbc:mysql:127。0。0。1:3306ssmdb?serverTimezoneGMT2b8useUnicodetrueuseSSLfalsecharacterEncodingUTF8username:rootpassword:123456hikari:connectiontimeout:60000validationtimeout:3000idletimeout:60000logintimeout:5maxlifetime:60000maximumpoolsize:30minimumidle:10readonly:falsemybatisplus配置mybatisplus:configuration:logimpl:org。apache。ibatis。logging。stdout。StdOutImplmapperlocations:classpath:mapper。xml复制代码
  4、在resource新建一个mapper文件用来存放mybatis的xml文件
  5、springboot整合mybatispluspackagecom。ksd。pug;importorg。mybatis。spring。annotation。MapperScan;importorg。springframework。boot。SpringApplication;importorg。springframework。boot。autoconfigure。SpringBootApplication;SpringBootApplicationMapperScan(com。ksd。pug。mapper)publicclassPugSpringbootSsmApplication{publicstaticvoidmain(String〔〕args){SpringApplication。run(PugSpringbootSsmApplication。class,args);}}复制代码SpringBoot实现对用户表的CRUD操作
  01、pojopackagecom。ksd。pug。pojo;importcom。baomidou。mybatisplus。annotation。IdType;importcom。baomidou。mybatisplus。annotation。TableId;importcom。baomidou。mybatisplus。annotation。TableName;importlombok。AllArgsConstructor;importlombok。Data;importlombok。NoArgsConstructor;importlombok。ToString;importjava。io。Serializable;importjava。util。Date;DataAllArgsConstructorNoArgsConstructorToStringTableName(kssuser)publicclassUserimplementsSerializable{TableId(typeIdType。AUTO)privateIntegerid;privateStringusername;privateStringpassword;privateStringrealName;privateIntegergender;privateDatebirthday;}复制代码
  02、mapperpackagecom。ksd。pug。mapper;importcom。baomidou。mybatisplus。core。mapper。BaseMapper;importcom。ksd。pug。pojo。User;publicinterfaceUserMapperextendsBaseMapperUser{}复制代码
  03、service和serviceImplpackagecom。ksd。pug。service;importcom。baomidou。mybatisplus。extension。service。IService;importcom。ksd。pug。pojo。User;publicinterfaceIUserServiceextendsIServiceUser{}复制代码packagecom。ksd。pug。service;importcom。baomidou。mybatisplus。extension。service。impl。ServiceImpl;importcom。ksd。pug。mapper。UserMapper;importcom。ksd。pug。pojo。User;importlombok。extern。slf4j。Slf4j;importorg。springframework。stereotype。Service;Slf4jServicepublicclassIUserServiceImplextendsServiceImplUserMapper,UserimplementsIUserService{}复制代码
  04、controllerpackagecom。ksd。pug。controller;importcom。baomidou。mybatisplus。core。conditions。query。LambdaQueryWrapper;importcom。baomidou。mybatisplus。core。metadata。IPage;importcom。baomidou。mybatisplus。extension。plugins。pagination。Page;importcom。ksd。pug。config。exception。BusinessException;importcom。ksd。pug。config。results。Code;importcom。ksd。pug。config。results。Result;importcom。ksd。pug。pojo。User;importcom。ksd。pug。service。IUserService;importorg。springframework。beans。factory。annotation。Autowired;importorg。springframework。web。bind。annotation。;RestControllerRequestMapping(user)publicclassUserController{AutowiredprivateIUserServiceuserService;PostMappingpublicResultsave(Useruser){booleanflaguserService。saveOrUpdate(user);returnnewResult(flag?Code。SAVEOK:Code。SAVEERROR);}PutMappingpublicResultupdate(Useruser){booleanflaguserService。updateById(user);returnnewResult(flag?Code。UPDATEOK:Code。UPDATEERROR);}DeleteMapping({id})publicResultdelete(Integerid){booleanflaguserService。removeById(id);returnnewResult(flag?Code。DELETEOK:Code。DELETEERROR);}GetMapping({id})publicResultget(PathVariable(id)Integerid)throwsBusinessException{UseruseruserService。getById(id);模拟出现异常,使用条件控制,便于测试结果if(id10){thrownewBusinessException(查询出错了,请重试!,Code。GETERROR);}returnnewResult(null!user?Code。GETOK:Code。GETERROR,user);}GetMapping({pageNo}{pageSize})publicResultgetAll(PathVariableIntegerpageNo,PathVariableIntegerpageSize){1、设置分页PagepagenewPage(pageNo,pageSize);2、设置条件LambdaQueryWrapperUserlambdaQueryWrappernewLambdaQueryWrapper();3、查询分页返回IPagepage1userService。page(page,lambdaQueryWrapper);returnnewResult(null!page1?Code。GETOK:Code。GETERROR,page1);}}复制代码MybatisPlus的分页失效问题ConfigurationpublicclassMybatisPlusConfig{新的分页插件,一缓和二缓遵循mybatis的规则,需要设置MybatisConfigurationuseDeprecatedExecutorfalse避免缓存出现问题(该属性会在旧插件移除后一同移除)BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptornewMybatisPlusInterceptor();interceptor。addInnerInterceptor(newPaginationInnerInterceptor(DbType。MYSQL));returninterceptor;}}复制代码MybatisPlus的创建时间和更新时间回填问题定义个回填配置类Slf4jComponentpublicclassMyMetaObjectHandlerimplementsMetaObjectHandler{OverridepublicvoidinsertFill(MetaObjectmetaObject){log。info(startinsertfill。。。);defaultMetaObjectHandlersetFieldValByName(StringfieldName,ObjectfieldVal,MetaObjectmetaObject)this。setFieldValByName(createTime,newDate(),metaObject);this。setFieldValByName(updateTime,newDate(),metaObject);}OverridepublicvoidupdateFill(MetaObjectmetaObject){this。setFieldValByName(updateTime,newDate(),metaObject);}}复制代码在pojo中使用TableFiled(fillxxx)指定回填触发方法packagecom。ksd。pug。pojo;importcom。baomidou。mybatisplus。annotation。;importlombok。AllArgsConstructor;importlombok。Data;importlombok。NoArgsConstructor;importlombok。ToString;importjava。io。Serializable;importjava。util。Date;DataAllArgsConstructorNoArgsConstructorToStringTableName(kssuser)publicclassUserimplementsSerializable{TableId(typeIdType。AUTO)privateIntegerid;privateStringuserName;privateStringpassword;privateStringrealName;privateIntegergender;privateDatebirthday;TableField(fillFieldFill。INSERT)privateDatecreateTime;TableField(fillFieldFill。INSERTUPDATE)privateDateupdateTime;}复制代码
  数据库级别的解决方案
  首先将字段设置为timestamp,然后设置不是null,根据当前时间戳更新,在这里注意我们的createtime是不根据当前时间戳更新的!这种方式虽然可以但是不建议!
  在mysql低版本的时候可能会出现一个问题,你的sql语句无法导入,而导致这个的原因是有的他只可以设置一个timestamp(在这里提示:mysql5。7、mysql8。0是可以的!)MybatisPlus是怎么做到不写sql但是可以实现CRUD操作背后绝对是拼接SQL语句,然后调用mybatis底层执行sql。
  具体需要学习mp!
  作者:NakanoMay
  链接:https:juejin。cnpost7183739358883610680

旷视印奇AI未来会沿两个方向演进,AIinDigital和A3月10日,2023旷视企业业务合作伙伴大会在北京举行,近200位来自不同行业和区域的合作伙伴代表共同参加了本次大会。在本次大会上,旷视分享了最新的技术和产品布局,以及在……拥有果冻芯的西红柿有多好吃?即食凉拌炒蛋放汤,不一样的滋味山东海阳普罗旺斯西红柿,是国家地理标志农产品,名字带着浓浓的法式风,却是从荷兰引进的品种,以沙质多汁口感而闻名。现在的普罗旺斯西红柿表皮薄透、通红有光泽,部分还有晶莹剔透……全省宝藏赏花地名单出炉,咸宁3地入围!近日,湖北日报联合湖北省文旅厅联合推出的钟情湖北樱你而来谁是湖北宝藏赏花地评选结果正式出炉,经过7天的线上投票,咸宁市咸安区大幕乡万亩野樱、赤壁市葛仙山、崇阳县龙泉山樱花谷景区……一文读懂,TCL电视最全导购整理前几天看到有朋友问电视相关的问题,今天来介绍几款TCL的电视,价格从【300020000元】档位都有,目前TCL电视产品档位分布可以参考配图表格。图表中标红为个人推荐型号……九寨沟到底几月份去最合适呢一、夏季真的最佳么?我看到许多所谓的游客回复最佳旅游季节是夏季,那我只能说,这些游客要么是了解少,要么就是别有用心了。一部分回答夏季的人,绝大部分是旅游从业者假冒的……WeWork正与投资人谈判重组超30亿美元债务软银不再投钱雷递网雷建平3月9日共享办公公司WeWork日前被曝出正与投资者谈判,以重组其超过30亿美元的未偿债务并筹集更多现金。消息发布后,WeWork今日股价上涨4,……统信软件奋力开创科技自立自强新局面作为全球主流操作系统产品与服务提供商,统信软件锚定数字经济发展主航道,以B端赋能千行百业,C端走进千家万户战略为指引,推动数字技术和实体经济深度融合。我们在党政、运营商、……袁学军期雨燕成文化使者,望香港小朋友有机会来北京看看文:孙志、马晓芳北京雨燕的迁徙路程一直是个谜,直到有专家通过给雨燕安装光敏定位器,才发现北京雨燕令人震惊的万里大迁徙。跟踪数据显示,每年北京雨燕都要经过数月的飞行旅程,从……20年了,马龙还行啊!这个年纪了,我还能打打。当34岁的马龙,将德班世乒赛的门票收入囊中时,谦逊的语气中难掩一股自信。用拼劲、狠劲和韧劲,马龙高擎着中国乒乓球队的旗帜,这张门票不只是实力的证明,更是……重视身体健康中老年人如何通过正骨按摩缓解不适张叔是一位中年人,平时工作忙碌,身体却一直被他忽视。他经常加班熬夜,没有规律的生活习惯,还喜欢吃油腻的食物,导致他的身体逐渐变得虚弱。一天,他突然感到腰酸背痛,甚至走路都……魅族20上手体验涅槃归来,即将起飞?大年初一上午,久未营业的魅族官博突然更新了一条魅族20系列的预热海报,熟悉的一句春天见恍惚中让人梦回两年前。手持魅族18Pro看着微博推送,窗外时不时传来一两阵爆竹声响,别样的……寿光菜博会4月20日开幕一个20平方米的展位拍出18。32万4月3日,第二十四届中国(寿光)国际蔬菜科技博览会(以下简称菜博会)在济南举行新闻发布会。此次菜博会,以绿色科技未来为主题,将于4月20日在寿光市蔬菜高科技示范园开幕。……
CBA季后赛赛程出炉前两轮3场2胜半决赛5场3胜总决赛7场4北京时间3月24日,CBA官方公布季后赛的赛程安排,其中12进8和14决赛,将采用3场2胜制,半决赛采用5场3胜制,总决赛则将采用7场4胜制。在该赛制下,偶然性也将大幅度降低,……国际乒联更新排名樊振东男单断层第一中新网客户端北京3月29日电北京时间29日,国际乒联官网公布了第13周世界排名。男单方面,樊振东以巨大优势断层第一,女单方面,陈梦依旧排名第一。男单排名在国际乒联第……目中无人谭维维看不上超女,写歌DISS尚雯婕,今靠浪姐逆袭谭维维为何要骂恩人高晓松高晓松怎么也没有想到费劲心力帮助谭维维,换来的却是一顿臭骂。2019年在节目上谭维维的话出人意料,她竟然非常的恨高晓松,试想作为谭维维的贵人……乌龙交易!勇士雄鹿交易取消,105悍将辅佐库里北京时间6月25号,NBA休赛期正在热火朝天进行中,参赛各队都在为这场没有硝烟的抢人大战积极备战着,力争帮助球队在今夏完成阵容的升级补强,以在新赛季取得更上一层楼的战绩。近段时……你是因为什么开始决定养生的?在哪一刻,你开始决定养生?是看到90后保温杯里泡枸杞,而跟风决定养生;还是因为自己生病,才意识到健康最重要。我想,对于每一个母亲来说,陪伴孩……与一塘美荷的初相见一直就听说过这片荷塘,可总没有机会前往,只能在脑海中想象着它的模样。暑假中,我终于有幸一睹它的芳容。车停在荷塘不远的小路上,下车便看到一口浅浅的水井。井壁上长着深绿的青苔……国足亚洲杯分组抽签或处劣势中国香港队获得亚洲杯正赛入场券2023年亚洲杯预选赛最后一个阶段赛事于北京时间6月15日凌晨偃旗息鼓。在印度加尔各答进行的D组最后一轮角逐中,中国香港队以0比4不敌印度队……618买手机,预算15002000,五款优质旗舰推荐,闭眼买接着上期,本次我们继续【618手机购买攻略】的话题,本次我们要说的是15002000价位的高素质手机,说实话,这个价格段的产品,和10001500价位的产品难免会有一定交叉,不……魏秋月丈夫秀英文,充当女排临时翻译,能力出众扮演多个角色中国女排轻松地战胜了比利时,拿到了自己的第四场胜利,球员们的表现也基本稳定,把失误降到了最低,能看得出两支队伍的差距。比赛过后,女排队长袁心玥接受了采访,而充当临时翻译的是女排……二选一!哈兰德下家范围确定,只剩十一支球队,两大豪门最被看好近期,由于巴黎圣日耳曼和皇家马德里之间进行欧冠淘汰赛的原因,姆巴佩的新闻铺天盖地,加之其两回合发挥出色,人们对姆巴佩的期待又提升了一个高度,而与之并称为新绝代双骄的哈兰德的热度……这回伊藤美诚笑不出来了!国乒四核强势领跑,日乒新一姐浮出水面如今时间已至5月份。随着近期国际乒联高调对外宣布改革世界排名积分规则后,大家都在等待着最新榜单的出炉,毕竟不出意外,一些选手的排名会发生轮动。果不其然,随着国际乒联对外公布第1……看遍春花,春未老春天,是百花争艳的季节。正所谓:万紫千红总是春。各种各样的花儿争相绽放,争奇斗妍,点缀着春天。人们收到了春天的消息,更沉醉于春花的美丽与芬芳,看梅花开了,看桃花开了,李花……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网