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

SpringBoot集成MyBatis-Plus

初始化Spring Boot项目(添加Lombok和MySQLDriver依赖)

 

 关键依赖包:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ktjiaoyu</groupId><artifactId>MyBatis-Plus</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>MyBatis-Plus</name><description>MyBatis-Plus</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.18</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
}

 application.properties添加相关配置:

spring.application.name=MyBatis-Plus
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/crm?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#??????????????
spring.datasource.druid.initial-size=3
spring.datasource.druid.min-idle=3
spring.datasource.druid.max-active=10
#?????????????
spring.datasource.druid.max-wait=60000
#????zh,??
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
#??StatFilter
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
#logging.level.root=warn
#logging.level.com.ktjiaoyu.crm.mapper=trace
#logging.pattern.console=%p%m%n

 启动类:

package com.ktjiaoyu.crm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.ktjiaoyu.crm.mapper")
public class MyBatisPlusApplication {public static void main(String[] args) {SpringApplication.run(MyBatisPlusApplication.class, args);}}

 编写实体类:User

package com.ktjiaoyu.crm.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
@Data
@TableName("sys_user")
public class User implements Serializable {@TableId(type = IdType.AUTO)@TableField("usr_id")private Long usrId;@TableField("usr_name")private String usrName;private String usrPassword;private Long usrRoleId;private Integer usrFlag;public User(String usrName, String usrPassword, Long usrRoleId, Integer usrFlag) {this.usrName = usrName;this.usrPassword = usrPassword;this.usrRoleId = usrRoleId;this.usrFlag = usrFlag;}
}

 编写Mapper接口

package com.ktjiaoyu.crm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ktjiaoyu.crm.pojo.User;
public interface UserMapper extends BaseMapper<User> {}

测试:

package com.ktjiaoyu.crm;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ktjiaoyu.crm.mapper.UserMapper;
import com.ktjiaoyu.crm.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.List;
@SpringBootTest
public class UserMapperTestr {
//    @Autowired@Resourceprivate UserMapper userMapper;@Testpublic void testSelectById(){//主键查询User user=userMapper.selectById(1L);System.out.println("usrName: "+user.getUsrName());}@Testpublic void testInsert() {//添加userMapper.insert(new User("李荣华","123456",9L,1));}@Testpublic void testFindAll() {//查询所有List<User> list=userMapper.selectList(null);for (User user:list){System.out.println("usrName: "+user.getUsrName());}}@Testpublic void testFind(){//条件查询,根据用户名和密码查询QueryWrapper<User> wrapper=new QueryWrapper<>();wrapper.eq("usr_name","小波老师");wrapper.eq("usr_password","123456");List<User> list=userMapper.selectList(wrapper);for (User user:list){System.out.println("usrId: "+user.getUsrId());}}@Testpublic void testPagination() {//分页查询QueryWrapper<User> wrapper=new QueryWrapper<User>();wrapper.eq("usr_role_id",2L);//查询条件:角色Id为2//分页对象,查询获得User对象,查看第1页数据,每页显示2条记录Page<User> page=new Page<>(1,2);IPage<User> userPage=userMapper.selectPage(page,wrapper);System.out.println("总记录数:"+userPage.getTotal());System.out.println("总页数:"+userPage.getPages());System.out.println("当前页码:"+userPage.getCurrent());System.out.println("记录"+userPage.getSize());System.out.println("-------");for (User user:userPage.getRecords()){System.out.println("usrId:"+user.getUsrId());}}
}

 测试结果:第一个主键查询

 总结:

一、优势

  1. 高效开发

    • 简化了数据库操作,通过 MyBatis-Plus 提供的丰富功能,如条件构造器、分页插件等,可以快速构建复杂的数据库查询和操作逻辑,大大提高开发效率。
    • 减少了大量的 SQL 编写工作,尤其是重复性的增删改查操作。
  2. 强大的功能

    • 提供了代码生成器,可以根据数据库表结构自动生成实体类、Mapper 接口和 XML 文件,节省了大量的手动编码时间。
    • 内置分页插件,轻松实现分页查询,无需手动编写分页 SQL。
    • 支持逻辑删除,方便对数据进行软删除操作,保证数据的安全性和完整性。
  3. 易于维护

    • 代码结构清晰,遵循 Spring Boot 的开发规范,易于理解和维护。
    • MyBatis-Plus 的封装使得数据库操作更加统一和规范,减少了因不同开发人员编写风格不同而带来的维护难题。

二、集成步骤

  1. 添加依赖

    • 在项目的 pom.xml 文件中添加 MyBatis-Plus 的依赖包。
  2. 配置数据源

    • 在 application.properties 或 application.yml 文件中配置数据库连接信息,包括数据库 URL、用户名、密码等。
  3. 创建实体类

    • 根据数据库表结构创建对应的实体类,并使用 MyBatis-Plus 提供的注解进行标识,如 @TableName 注解用于指定表名。
  4. 创建 Mapper 接口

    • 继承 MyBatis-Plus 提供的 BaseMapper 接口,无需编写具体的 SQL 语句,即可实现基本的数据库操作方法。
  5. 使用代码生成器(可选)

    • 如果需要快速生成代码,可以使用 MyBatis-Plus 的代码生成器,根据数据库表结构自动生成实体类、Mapper 接口和 XML 文件。

三、常见应用场景

  1. 企业级应用开发

    • 在企业级应用中,通常需要处理大量的数据和复杂的业务逻辑。Spring Boot 集成 MyBatis-Plus 可以帮助开发人员快速构建高效、稳定的数据库访问层,提高开发效率和系统性能。
  2. 微服务架构

    • 在微服务架构中,每个微服务都可能需要独立访问数据库。MyBatis-Plus 可以方便地与 Spring Boot 集成,为每个微服务提供独立的数据库操作能力,同时保证数据的一致性和完整性。
  3. 快速开发原型系统

    • 当需要快速开发一个原型系统时,MyBatis-Plus 的代码生成器可以大大缩短开发时间,让开发人员能够更快地验证业务逻辑和系统功能。

总之,Spring Boot 集成 MyBatis-Plus 是一种高效、便捷的数据库开发方式,它能够帮助开发人员快速构建强大的数据库访问层,提高开发效率和系统性能。无论是企业级应用开发还是快速开发原型系统,都可以考虑使用这种集成方式。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何在多台电脑上同步 VSCode配置和插件
  • N-152基于java贪吃蛇游戏5
  • 【论文阅读】视觉分割新SOTA: Segment Anything(SAM)
  • 【ABAP】ole2 excel多sheet导入导出
  • MySQL 解决时区相关问题
  • Map(HashMap)
  • SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出
  • 卫生间装修防滑石用瓷砖还是大理石好呢?
  • 算法知识点————背包问题
  • 时间序列预测学习方向总概括
  • Python基础语法(1)
  • 已知两圆的圆心半径,求交点坐标——CAD VBA 解决
  • 1-【JavaWeb】数据库基础
  • 生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute
  • java中redis集群模式和哨兵模式的区别和联系?
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 5、React组件事件详解
  • ES6 ...操作符
  • Java|序列化异常StreamCorruptedException的解决方法
  • Logstash 参考指南(目录)
  • OSS Web直传 (文件图片)
  • session共享问题解决方案
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • ucore操作系统实验笔记 - 重新理解中断
  • Vultr 教程目录
  • 阿里云购买磁盘后挂载
  • 成为一名优秀的Developer的书单
  • 大整数乘法-表格法
  • 电商搜索引擎的架构设计和性能优化
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 解析 Webpack中import、require、按需加载的执行过程
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 三栏布局总结
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 项目实战-Api的解决方案
  • 源码安装memcached和php memcache扩展
  • 字符串匹配基础上
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • ​Redis 实现计数器和限速器的
  • ​secrets --- 生成管理密码的安全随机数​
  • # 数据结构
  • #NOIP 2014# day.2 T2 寻找道路
  • (八)Spring源码解析:Spring MVC
  • (笔试题)合法字符串
  • (超详细)语音信号处理之特征提取
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (全注解开发)学习Spring-MVC的第三天
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)项目管理杂谈-我所期望的新人
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .net 流——流的类型体系简单介绍
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法