您的位置:首页 > 科技 > 能源 > SpringBoot集成MyBatis-Plus

SpringBoot集成MyBatis-Plus

2024/11/17 21:11:02 来源:https://blog.csdn.net/2301_78714573/article/details/142055053  浏览:    关键词: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 是一种高效、便捷的数据库开发方式,它能够帮助开发人员快速构建强大的数据库访问层,提高开发效率和系统性能。无论是企业级应用开发还是快速开发原型系统,都可以考虑使用这种集成方式。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com