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
我心中的top级养肤面霜,可别叫它平替了大家好,我是艾夏。以前都是分享一些护肤心得和爱用物,这次打算说点不一样的,给大家带来的是千元面霜介绍。这个栏目主要是想带大家全方位了解贵价护肤品,尤其是成分表背后的隐藏闪光点。我也
每周学习一个美容仪小知识每周学习一个美容仪小知识今天要学习的是射频美容仪射频原理射频能够作用在真皮层促进胶原蛋白的再生射频通过高频率的电磁波,将带电粒子高速移动,在这个过程中,能量会深入到真皮层同时温度升
秋天这样洗澡,不仅生病还会短命!想要长寿,要少做4件事经过一整天奔波,再加上新陈代谢作用,皮肤上会残留外界灰尘脱落的皮脂汗液等。洗澡能去除皮肤上的残留物,帮助疏通经络,改善血液循环,缓解一整天的疲劳感,有助于睡眠。然而,秋季洗澡要谨慎
爱你入心,相思入骨爱你入心,相思入骨闲下来,总会想起你,想起你的笑,想起你的好,想起你的味道,总之,所有的想念,都是我说不出口的秘密。这么晚了,还没有收到你的信息,心里有一点着急,赶紧掏出手机,在微
男人的这些模样,只会展现给他最爱的女人文森屿鹿林每个人都是多面性的,面对不同的人,会展现出不同的模样。生活中,我们每个人都身兼多个角色,在不同的场合,面对不同的人时,会展现出不一样的自己。有些人不需要知道太多,有些人不
山北江南一望中,雁飞不到楚天空山北江南一望中,雁飞不到楚天空,衡阳路远无消息,何处潇湘有信鸿。昔曾南去随胡雁,今又北来伴塞鸿,莫道衡阳夜雨梦魂中。路远意如何,风雨潇湘家山千里外,南飞雁字几行多。万里程,凭栏独立
晨读盛夏少年,肆意生长盛夏,就在不经意间过去了,连带着我无畏生长的年少和激昂的青春。连雨不知春去,一晴方觉夏深。我从屋内打着哈欠出来时,十二三岁的侄子正跃跃欲试,想要摘下高枝上黄澄澄的枇杷。他信心满满,
我也知道自己嘴笨写在最后。大家好,我是泽鹏。第一次看到仙贝这篇稿子时,我其实挺受触动。我也属于是大人眼里的不太会来事的年轻人,无法夸夸其谈,甚至每次一想到要去长辈家里做客,都会有些头疼。和仙贝不同
风碎倒影相知如镜群山水面上绵亘一座浮雕黛青色养眼,林木繁茂白房子错落有致,浮云从凹陷处溢出,散漫飘远血管那么多条,运煤车深入腹地树上野果,被飞鸟纷纷啄食向着对岸呼唤一声,回音充满岁月柔情大片茶园,
害群之马,错的不仅仅是一条马人们反思的时候,第一反应就是痛恨敌人,谴责他们的残忍狠毒,毫无人性,接下来会分析下当时的历史环境。终究还是避重就轻的多。伟人一针见血落后就要挨打!我们反思的重点其实是为什么落后,为
9月19号,尝试写读书笔记的第6天!告诉自己别轻易放弃忙碌的一天结束了!今天是尝试写读书笔记的第6天,确实不知道应该写点什么?放弃实在是太容易了,理由也可以有很多。但想坚持下去,只要告诉自己写就完了,哪怕随便写点什么。我就是想试试逼自