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