当前位置: 首页 > news >正文

企业站群cms中国互联网上网服务行业协会

企业站群cms,中国互联网上网服务行业协会,西安做公司网站,wordpress个人博客主题模板中文文章目录 1. 简介2. 入门使用3. 核心功能3.1 CRUD 接口3.1.1 Mapper CRUD 接口3.1.2 Service CRUD 接口 3.2 条件构造器3.3 分页插件3.4 Mybatis-Plus 注解 4. 拓展4.1 逻辑删除4.2 MybatisX快速开发插件 5. 插件5.1 [分页插件](#page)5.2 乐观锁插件 1. 简介 MyBatis Plus在 MyBatis 的基础上只做增强不做改变为简化开发、提高效率而生。官网https://baomidou.com/ 下面功能及使用都可从官网找到 MyBatis Plus 具有以下特性 无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑损耗小启动即会自动注入基本 CURD性能基本无损耗直接面向对象操作强大的 CRUD 操作内置通用 Mapper、通用 Service仅仅通过少量配置即可实现单表大部分 CRUD 操作更有强大的条件构造器满足各类使用需求支持 Lambda 形式调用通过 Lambda 表达式方便的编写各类查询条件无需再担心字段写错支持主键自动生成支持多达 4 种主键策略内含分布式唯一 ID 生成器 - Sequence可自由配置完美解决主键问题支持 ActiveRecord 模式支持 ActiveRecord 形式调用实体类只需继承 Model 类即可进行强大的 CRUD 操作支持自定义全局通用操作支持全局通用方法注入 Write once, use anywhere 内置代码生成器采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码支持模板引擎更有超多自定义配置等您来使用内置分页插件基于 MyBatis 物理分页开发者无需关心具体操作配置好插件之后写分页等同于普通 List 查询分页插件支持多种数据库支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库内置性能分析插件可输出 SQL 语句以及其执行时间建议开发测试时启用该功能能快速揪出慢查询内置全局拦截插件提供全表 delete 、 update 操作智能分析阻断也可自定义拦截规则预防误操作 2. 入门使用 创建Maven工程 添加依赖这里给一份 springboot3 较为完整依赖 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.0/version /parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-spring-boot3-starter/artifactIdversion3.5.5/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-3-starter/artifactIdversion1.2.20/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.33/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.28/version/dependency /dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins /build启动类配置 MapperScan(com.springboot.mapper) mapper接口扫描注解 配置文件 application.yaml spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:username: rootpassword: rooturl: jdbc:mysql:///mybatisplusdriver-class-name: com.mysql.cj.jdbc.Driver编写 mapper 接口继承 BaseMapper 继承mybatis-plus提供的基础Mapper接口将自带crud方法 部分约定配置 map-underscore-to-camel-case 下划线驼峰命名默认开启 mapper扫描classpath*:/mapper/**/*.xml 3. 核心功能 3.1 CRUD 接口 3.1.1 Mapper CRUD 接口 官网https://baomidou.com/pages/49cc81/#mapper-crud-接口 使用时ScheduleMapper extends BaseMapperSchedule 通用 CRUD 封装 BaseMapper 接口为 Mybatis-Plus 启动时自动解析实体表关系映射转换为 Mybatis 内部对象注入容器泛型 T 为任意实体对象参数 Serializable 为任意类型主键 Mybatis-Plus 不推荐使用复合主键约定每一张表都有自己的唯一 id 主键对象 Wrapper 为 条件构造器 ScheduleMapper 将包含 BaseMapper 中的一系列增删改查及分页查询方法 3.1.2 Service CRUD 接口 官网https://baomidou.com/pages/49cc81/#service-crud-接口 通用 Service CRUD 封装 IService 接口进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆泛型 T 为任意实体对象建议如果存在自定义通用 Service 方法的可能请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类对象 Wrapper 为 条件构造器 3.2 条件构造器 Wrapper 条件构造抽象类最顶端父类 AbstractWrapper 用于查询条件封装生成 sql 的 where 条件 QueryWrapper 查询/删除条件封装UpdateWrapper 修改条件封装AbstractLambdaWrapper 使用Lambda 语法 LambdaQueryWrapper 用于Lambda语法使用的查询WrapperLambdaUpdateWrapper Lambda 更新封装Wrapper 组装条件 这里仅介绍基于 Lambda 的条件封装的使用非 Lambda 自行创建对象 QueryWrapper 用类似方法进行拼接即可 LambdaQueryWrapper RequestMapping(query) public ResultListSchedule query() {LambdaQueryWrapperSchedule queryWrapper new LambdaQueryWrapper();queryWrapper.eq(Schedule::getId, 2);return new Result(scheduleService.list(queryWrapper)); }LambdaUpdateWrapper 使用 set() 方法设置属性 RequestMapping(update) public ResultBoolean update() {LambdaUpdateWrapperSchedule updateWrapper new LambdaUpdateWrapper();updateWrapper.eq(Schedule::getId, 2).eq(Schedule::getCompleted, 0);updateWrapper.set(Schedule::getCompleted, 1).set(Schedule::getTitle, 学个P呀);return new Result(scheduleService.update(updateWrapper)); }3.3 分页插件 配置方法配置类中将 MybatisPlusInterceptor 注入 IoC容器中注入前添加 PaginationInnerInterceptor 拦截器 MapperScan(com.springboot.mapper) SpringBootApplication public class SpringBootApplicationMain {public static void main(String[] args) {SpringApplication.run(SpringBootApplicationMain.class);}Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor;} }使用默认实现的分页scheduleService.page 返回的是 Page 对象与 new Page 是同一个只是对象中有了更多信息 RequestMapping(query) public ResultPageSchedule query() {PageSchedule page new Page(1,5);return new Result(scheduleService.page(page)); }Page 该类继承了 IPage 类实现了 简单分页模型 如果你要实现自己的分页模型可以继承 Page 类或者实现 IPage 类 属性名类型默认值描述recordsListemptyList查询数据列表totalLong0查询列表总记录数sizeLong10每页显示条数默认 10currentLong1当前页ordersListemptyList排序字段信息允许前端传入的时候注意 SQL 注入问题可以使用 SqlInjectionUtils.check(...) 检查文本optimizeCountSqlbooleantrue自动优化 COUNT SQL 如果遇到 jSqlParser 无法解析情况设置该参数为 falseoptimizeJoinOfCountSqlbooleantrue自动优化 COUNT SQL 是否把 join 查询部分移除searchCountbooleantrue是否进行 count 查询如果只想查询到列表不要查询总记录数设置该参数为 falsemaxLimitLong单页分页条数限制countIdStringxml 自定义 count 查询的 statementId 也可以不用指定在分页 statementId 后面加上 _mpCount 例如分页 selectPageById 指定 count 的查询 statementId 设置为 selectPageById_mpCount 即可默认找到该 SQL 执行 自定义分页方法接口 //传入参数携带Ipage接口 //返回结果为IPage IPageUser selectPageVo(IPage? page, Integer id);select idselectPageVo resultTypexxx.xxx.xxx.UserSELECT * FROM user WHERE id #{id} /select如果返回类型是 IPage 则入参的 IPage 不能为null因为 返回的 IPage 入参的IPage如果想临时不分页可以在初始化 IPage 时 size 参数传 0 的值 如果返回类型是 List 则入参的 IPage 可以为 null(为 null 则不分页)但需要你手动 入参的IPage.setRecords(返回的 List); 如果 xml 需要从 page 里取值,需要 page.属性 获取 注意多个插件使用的情况请将分页插件放到 插件执行链 最后面。如在租户插件前面会出现 COUNT 执行 SQL 不准确问题 3.4 Mybatis-Plus 注解 详情可参考官网https://baomidou.com/pages/223848/#tablename TableName 表名注解标识实体类对应的表TableId 主键注解。type指定为 ASSIGN_ID 会调用主键生成默认实现类以雪花算法生成 IDTableField 字段注解非主键Version 乐观锁注解TableLogic 逻辑处理注解增加注解后删除会进行逻辑删除。默认逻辑删除属性已删除值为 1未删除值为 0。也可通过 mybatis-plus.global-config.db-config.logic-delete-field 配置全局逻辑删除属性。二者必须配置一个逻辑删除才会生效注意也会影响默认查询逻辑查询中会过滤逻辑删除的数据OrderBy 内置 SQL 默认指定排序优先级低于 wrapper 条件查询 4. 拓展 4.1 逻辑删除 配置 application.yaml 从 3.3.0 版本开始可以忽略不配置 TableLogic 注解 mybatis-plus:global-config:db-config:logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)实体类字段上加上 TableLogic 注解 4.2 MybatisX快速开发插件 在 idea 插件中搜索 MybatisX 安装后右侧导航栏(Datasbase)连接数据源后即可选择表右键直接生成代码 如果需要生成是子模块代码这里需要手动填一下子模块目录目前版本选中子模块不会自动填入如我这里是 T01 relative package 实体类的生成包 之后需选中 Model 才会生成实体类 5. 插件 目前已有的功能: 自动分页: PaginationInnerInterceptor乐观锁: OptimisticLockerInnerInterceptor多租户: TenantLineInnerInterceptor动态表名: DynamicTableNameInnerInterceptor非法SQL拦截: IllegalSQLInnerInterceptor防止全表更新与删除: BlockAttackInnerInterceptor数据权限DataPermissionInterceptor数据变动记录DataChangeRecorderInnerInterceptor 插件配置注入 MybatisPlusInterceptor 对象即可注入前把需要的对应拦截器添加到该对象中 MapperScan(com.springboot.mapper) SpringBootApplication public class SpringBootApplicationMain {public static void main(String[] args) {SpringApplication.run(SpringBootApplicationMain.class);}Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多个插件,切记分页最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多数据源可以不配具体类型 否则都建议配上具体的DbTypereturn interceptor;} }注意: 使用多个功能需要注意顺序关系建议使用如下顺序 多租户动态表名分页乐观锁sql 性能规范防止全表更新与删除 总结: 对 sql 进行单次改造的优先放入不对 sql 进行改造的最后放入 具体可参考官网使用https://baomidou.com/pages/2976a3/ 5.1 分页插件 5.2 乐观锁插件 配置完拦截器后在实体类的字段上加上 Version 注解即可 说明: 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime整数类型下 newVersion oldVersion 1 newVersion 会回写到 entity 中仅支持 updateById(id) 与 update(entity, wrapper) 方法在 update(entity, wrapper) 方法下, wrapper 不能复用!!!
http://www.hkea.cn/news/14303072/

相关文章:

  • 网站制作详细报价表烟台企业宣传片制作公司
  • 网站运营建设职业规划ppt模板免费下载
  • 礼县住房和城乡建设局网站长春最新发布信息
  • 室内设计论坛网站大石桥网站
  • 手机网站 设计趋势资阳网络营销顾问招聘
  • 南通住房和城乡建设部网站用织梦做的网站 图片打开很慢
  • cms网站栏目介绍django网站开发规范
  • 青岛网站seo分析镇江佳鑫网络科技有限公司
  • 企业申报网站移动端优质网页
  • 网站运营推广方案做一个电商网站多少钱
  • 营销型网站排必须重视的问题之一
  • seo批量建站做ppt找图片在哪个网站
  • 深圳高端集团网站建设公司网站开发具体问题
  • 网站建设学什么网站策划知识
  • 西宁企业做网站云服务器上建网站
  • 网站建设策划书目录j网站开发
  • 不属于营销型网站的特点网站开发的路径是什么
  • 阿里云服务器上的网站怎么做修改互动创意网站
  • 网站开发设计需求吉隆坡建设大学中文网站
  • 餐饮 网站建设老域名查询
  • 灌南住房和城乡建设局网站淘宝网店开店网站建设
  • 淘客做网站多少钱简约 网站模板
  • 网站制作是不是要一个后台seo的中文意思是什么
  • 酒店网站建设方案策划方案百度seo搜索引擎优化培训
  • 做啤酒行业的网站嵌入式软件开发项目
  • 中国最大的手表网站推广赚佣金
  • 商丘企业做网站网站建设 全包 制作
  • 群晖ds1817做网站推广关键词排名方法
  • 成都网站建设scyiyou免费空间能放网站吗
  • 包头网站建设易通在线开发app