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

档案信息网站开发利用深圳网络公司推广公司

档案信息网站开发利用,深圳网络公司推广公司,广州做网站哪里有,网站自动适应屏幕[架构之美]Spring Boot集成MyBatis-Plus高效开发(十七) 摘要:本文通过图文代码实战,详细讲解Spring Boot整合MyBatis-Plus全流程,涵盖代码生成器、条件构造器、分页插件等核心功能,助你减少90%的SQL编写量…

[架构之美]Spring Boot集成MyBatis-Plus高效开发(十七)

摘要:本文通过图文+代码实战,详细讲解Spring Boot整合MyBatis-Plus全流程,涵盖代码生成器、条件构造器、分页插件等核心功能,助你减少90%的SQL编写量,提升企业级开发效率。

一、MyBatis-Plus核心优势

1.1 功能对比(MyBatis vs MyBatis-Plus)

功能MyBatisMyBatis-Plus
通用CRUD操作需手写内置实现
分页插件需配置开箱即用
代码生成器可视化生成
逻辑删除手动处理注解支持
性能分析插件内置拦截器

1.2 核心功能架构图

MyBatis-Plus
基础CRUD
条件构造器
分页插件
代码生成器
全局ID生成

二、环境准备

2.1 必需依赖

<dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MyBatis-Plus Starter --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>
</dependencies>

2.2 数据库准备

CREATE TABLE `user` (`id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(50) DEFAULT NULL,`age` int DEFAULT NULL,`email` varchar(100) DEFAULT NULL,`is_deleted` tinyint(1) DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

三、四步完成基础整合

步骤1:配置数据源

# application.yml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mp_demo?useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志

步骤2:创建实体类

@Data
@TableName("user")
public class User {@TableId(type = IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableLogicprivate Integer isDeleted;
}

步骤3:创建Mapper接口

public interface UserMapper extends BaseMapper<User> {// 继承基础CRUD方法
}

步骤4:添加Mapper扫描

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

四、五大核心功能实战

4.1 基础CRUD操作

// 插入
User user = new User();
user.setName("CSDN");
userMapper.insert(user);// 查询
User result = userMapper.selectById(1L);// 分页查询
Page<User> page = new Page<>(1, 10);
userMapper.selectPage(page, null);

4.2 条件构造器(QueryWrapper)

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "CSDN").between("age", 20, 30).orderByDesc("id");List<User> users = userMapper.selectList(wrapper);

4.3 逻辑删除配置

mybatis-plus:global-config:db-config:logic-delete-field: isDeleted  # 逻辑删除字段logic-delete-value: 1         # 删除标识值logic-not-delete-value: 0     # 未删除标识值

4.4 自动填充功能

@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;// 实现MetaObjectHandler
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());}
}

4.5 性能分析插件

@Bean
public PerformanceInterceptor performanceInterceptor() {PerformanceInterceptor interceptor = new PerformanceInterceptor();interceptor.setMaxTime(1000); // SQL执行最大时长(ms)interceptor.setFormat(true);  // 格式化SQLreturn interceptor;
}

五、企业级代码生成器

5.1 代码生成器配置

FastAutoGenerator.create("jdbc:mysql://localhost:3306/mp_demo", "root", "123456").globalConfig(builder -> builder.author("CSDN")).packageConfig(builder -> builder.parent("com.example")).strategyConfig(builder -> builder.addInclude("user")).templateEngine(new FreemarkerTemplateEngine()).execute();

5.2 生成文件结构

src/main/java/com/example
├── entity
│   └── User.java
├── mapper
│   └── UserMapper.java
└── service├── UserService.java└── impl└── UserServiceImpl.java

六、高频问题解决方案

Q1:分页插件不生效?

  • 确认已配置分页插件Bean
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;
}

Q2:字段映射不一致?

  • 使用@TableField注解指定数据库字段名
@TableField("user_name")
private String name;

Q3:SQL日志不显示?

  • 检查配置项mybatis-plus.configuration.log-impl
  • 确保日志级别为DEBUG

七、性能优化建议

  1. 索引优化:为查询条件字段添加索引
  2. 批量操作:使用saveBatch替代循环插入
  3. SQL监控:集成Druid数据源监控
  4. 缓存策略:整合Redis二级缓存
@Bean
public MybatisRedisCacheFactory redisCacheFactory() {return new MybatisRedisCacheFactory(redisTemplate);
}

八、最佳实践总结

  1. 代码规范
    • 实体类字段使用包装类型(避免NPE)
    • Service层继承IService接口
  2. 安全建议
    • 禁用MP的DELETE全表操作
    mybatis-plus:global-config:db-config:block-attack: true
    
  3. 版本管理:锁定MyBatis-Plus版本

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!

http://www.dtcms.com/wzjs/136937.html

相关文章:

  • 不干胶网站做最好的seo优化软件大全
  • 武汉有个人做网站的北京昨晚出什么大事
  • 个人网站备案 法律说明西安网是科技发展有限公司
  • wordpress 美丽说seo内容优化
  • 做外贸网站哪家的好网络优化工具
  • 孝感做招聘信息的网站荆门网站seo
  • 西安开发网站建设seo优化排名易下拉用法
  • 网站正在建设中的网页怎么做seo搜索引擎推广什么意思
  • 大连做网站的优化大师有必要安装吗
  • 沭阳各乡镇做网站百度客服24小时人工电话
  • 电子商务网站开发教案软文兼职10元一篇
  • 网站关键字优化技巧天津百度推广中心
  • 开发个网站需要多少钱怎么关键词优化网站
  • 站长工具网站提交seo关键词推广案例
  • 第三方仓储配送公司哈尔滨网络优化公司有哪些
  • 设计实例网站商丘优化公司
  • 网站开发维护招聘网站建站价格
  • 南京百度网站建设企业品牌网站营销
  • 邯郸做网站费用国内新闻最新5条
  • 西安网站建设第一品牌企业网站seo推广
  • 北京知名企业100强长沙seo袁飞
  • php网站开发案例详解手机清理优化软件排名
  • 跨境电商网站建设方案课程培训
  • 政协网站建设功能百度明星人气排行榜
  • 旅游网站制作文献app推广公司怎么对接业务
  • 深圳h5模板建站百度免费安装下载
  • 美橙网站建设南的武汉网站制作推广
  • 关键词排名优化易下拉技术电池优化大师下载
  • 网站服务器选购超级外链发布
  • 辽宁省建设厅证书查询网站seo关键词推广多少钱