怎么提高seo关键词排名烟台网站优化公司
2026/4/7 17:08:26 网站建设 项目流程
怎么提高seo关键词排名,烟台网站优化公司,网站公告怎么做,矢量图免费素材网MyBatis-Plus 是一个 MyBatis 的增强工具#xff0c;在 MyBatis 的基础上只做增强不做改变#xff0c;为简化开发、提高效率而生 官方地址#xff1a; git源码 文档 Spring boot 4如何集成 增加依赖 Add MyBatis-Plus dependency mybatisplus.version3.5.15…MyBatis-Plus 是一个 MyBatis 的增强工具在 MyBatis 的基础上只做增强不做改变为简化开发、提高效率而生官方地址git源码文档Spring boot 4如何集成增加依赖Add MyBatis-Plus dependencymybatisplus.version3.5.15/mybatisplus.versiondependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot4-starter/artifactIdversion${mybatisplus.version}/version/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-jsqlparser/artifactIdversion${mybatisplus.version}/version/dependency配置ConfigurationpublicclassMybatisPlusConfig{BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptormybatisPlusInterceptornewMybatisPlusInterceptor();// 数据权限mybatisPlusInterceptor.addInnerInterceptor(newDataFilterInterceptor());// 分页插件mybatisPlusInterceptor.addInnerInterceptor(newPaginationInnerInterceptor());// 乐观锁mybatisPlusInterceptor.addInnerInterceptor(newOptimisticLockerInnerInterceptor());// 防止全表更新与删除mybatisPlusInterceptor.addInnerInterceptor(newBlockAttackInnerInterceptor());returnmybatisPlusInterceptor;}}基础特性“零SQL” CRUD核心点业务模块的Mapper 接口继承BaseMapperT即可拥有insert、selectById、updateById、deleteBatchIds等 17 个常用方法。Service CRUD除了 Mapper 层MP 还提供了IService和ServiceImpl封装了更多的业务逻辑方法如saveBatch批量插入。提供SqlHelper工具类实现批量写入或更新操作条件构造器Wrapper三板斧QueryWrapper用于查询支持lambda避免字段名写错、UpdateWrapper用于更新支持链式设置 set 值。Lambda 表达式推荐使用LambdaQueryWrapper利用方法引用如User::getName来指定字段编译期检查防止 SQL 拼写错误。常用注解TableName指定表名如果类名与表名不一致。TableId指定主键策略如IdType.AUTO自增IdType.ASSIGN_ID雪花算法。TableField填充字段如创建时间、更新时间自动填充FieldFill.INSERT_UPDATE或者逻辑删除字段TableLogic增强功能自动填充自动填充实现MetaObjectHandler接口重写insertFill和updateFill方法统一处理create_time、update_time等字段。逻辑删除配置后delete语句会自动转化为UPDATE语句设置删除标记查询时自动追加WHERE deleted 0条件。 【在实体类中对应数据库表的逻辑删除字段上添加TableLogic注解】插入逻辑删除字段的值不受限制。查找自动添加条件过滤掉标记为已删除的记录。更新防止更新已删除的记录。删除将删除操作转换为更新操作标记记录为已删除自定义ID生成器IdentifierGenerator主要用于生成数据库表的主键IDKeyGenerator是MyBatis框架中的一个接口用于在执行SQL语句时生成键值通常用于生成自增主键或者在执行INSERT语句后获取新生成的IDMyBatis-Plus 内置支持多种数据库的主键生成策略如H2KeyGeneratorOracleKeyGeneratorPostgreKeyGenerator多数据源支持详细使用参见https://github.com/baomidou/dynamic-datasourceSpring Boot 1.5.x ~ 2.x.x 使用dynamic-datasource-spring-boot-starter支持 JDK 8 及以上版本Spring Boot 3.x.x 使用dynamic-datasource-spring-boot3-starter要求 JDK 17 及以上Spring Boot 4.x.x 使用dynamic-datasource-spring-boot4-starter要求 JDK 17 及以上插件机制常用插件分页插件PaginationInnerInterceptor原理MP 的分页不是内存分页而是物理分页。它通过 MyBatis 的拦截器Interceptor机制在 SQL 执行前重写 SQL如加上LIMIT。使用配置MybatisPlusInterceptor注入PaginationInnerInterceptor。代码中使用PageT对象接收结果。乐观锁插件OptimisticLockerInnerInterceptor读取记录时获取当前的版本号version。在更新记录时将这个版本号一同传递。执行更新操作时设置version newVersion的条件为version oldVersion。如果版本号不匹配则更新失败。多租户插件TenantLineInnerInterceptor是 MyBatis-Plus 提供的一个插件用于实现多租户的数据隔离。通过这个插件可以确保每个租户只能访问自己的数据从而实现数据的安全隔离默认插入 SQL 是需要判断租户条件因此需要配合自动填充字段功能填充租户字段否则租户字段不会自动保存到数据库非法SQL拦截插件IllegalSQLInnerInterceptor用于拦截和检查非法SQL语句。该插件旨在帮助开发者在SQL执行前发现并解决潜在的安全问题如全表更新、删除操作以及对索引的检查等防全表更新与删除插件BlockAttackInnerInterceptor专门用于防止恶意的全表更新和删除操作。该插件通过拦截update和delete语句确保这些操作不会无意中影响到整个数据表从而保护数据的完整性和安全性执行流程MyBatis-PlusMP插件的执行流程本质上是基于MyBatis 的插件Plugin机制实现的。MP 利用这一机制在 MyBatis 的核心执行流程中“插入”自己的逻辑从而实现分页、性能分析、SQL 注入防护等功能。MybatisPlusInterceptor是“包工头”它实现了 MyBatis 的接口并拦下所有活而ListInnerInterceptor是“工人”实现具体的功能组件层级类/接口名称职责实现关系顶层门面MybatisPlusInterceptor实现 MyBatis 原生Interceptor作为唯一入口管理插件列表。实现org.apache.ibatis.plugin.Interceptor插件容器ListInnerInterceptor存储具体的增强逻辑如分页、乐观锁由顶层门面调用。内部持有具体逻辑PaginationInnerInterceptor等实现具体的业务逻辑如重写 SQL、计算耗时。实现InnerInterceptor如何自定义SQL通过如下注解可以实现自定义SQLSelect: 查询Insert: 插入Update: 更新Delete: 删除MapperpublicinterfaceUserMapperextendsBaseMapperUser{// 简单查询Select(SELECT * FROM user WHERE email #{email})UserselectByEmail(Param(email)Stringemail);// 复杂一点的条件查询Select(SELECT * FROM user WHERE status #{status} AND age #{minAge})ListUserselectByStatusAndAge(Param(status)Integerstatus,Param(minAge)IntegerminAge);}mybatis知识# {}和${}的区别#{}是预编译处理PreparedStatement。MyBatis 会将它替换为?能有效防止 SQL 注入${}是字符串替换。直接将变量拼接到 SQL 中存在注入风险通常用于传入数据库表名或排序字段ORDER BYMyBatis 的一级缓存和二级缓存一级缓存作用域为SqlSession。在同一个会话中相同的查询不再查数据库。默认开启。二级缓存作用域为Namespace多个会话间共享。需要手动开启且实体类必须实现序列化接口。失效场景任何的INSERT,UPDATE,DELETE操作都会刷新缓存实体类属性名和表中字段名不一致怎么办在 SQL 语句中使用别名AS。使用ResultMap进行映射最常用。开启驼峰命名自动转换配置mapUnderscoreToCamelCaseMybatis的缓存机制一级缓存建议保持默认开启而二级缓存通常不建议开启默认也是关闭的尤其是在复杂的业务或分布式系统中一级缓存一级缓存的实现参见BaseExecutor、PerpetualCache一级缓存的生命周期由Executor执行器管理。在BaseExecutor所有执行器的基类中定义了本地缓存对象SqlSession每次创建都会生成一个新的Executor所以一级缓存是线程隔离的【参见DefaultSqlSessionFactory】二级缓存二级缓存的实现参见CachingExecutor、SynchronizedCache当开启二级缓存后MyBatis 会使用CachingExecutor包装原来的Executor装饰器模式二级缓存的实现非常优雅PerpetualCache是基础通过SynchronizedCache同步、LoggingCache日志、ScheduledCache定时、SerializedCache序列化、LruCache回收策略等装饰器层层包装组合出最终需要的功能特性一级缓存 (Local)二级缓存 (Global)作用范围单个 SqlSession 内同一个 Mapper 命名空间内数据共享独享不跨会话共享跨 SqlSession默认状态开启关闭 (需手动配置)生命周期伴随 SqlSession 的创建与关闭伴随 SqlSessionFactory 的生命周期清空时机增删改操作、close()、commit()对应 Mapper 的增删改操作、commit()是否开启缓存类型建议配置理由适用场景一级缓存开启 (默认)安全、自动管理、提升单次会话性能所有场景无需干预二级缓存关闭 (默认)避免脏读、避免分布式不一致复杂业务、分布式系统二级缓存开启 (需评估)需处理好序列化和跨表失效问题单机应用、数据字典、纯读场景一句话建议用好一级缓存忘掉二级缓存用 Redis 来做全局缓存

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询