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
    @Resource
    private UserMapper userMapper;
    @Test
    public void testSelectById(){//主键查询
        User user=userMapper.selectById(1L);
        System.out.println("usrName: "+user.getUsrName());
    }
    @Test
    public void testInsert() {//添加
        userMapper.insert(new User("李荣华","123456",9L,1));
    }
    @Test
    public void testFindAll() {//查询所有
        List<User> list=userMapper.selectList(null);
        for (User user:list){
          System.out.println("usrName: "+user.getUsrName());
        }
    }

    @Test
    public 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());
        }
    }
    @Test
    public 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 是一种高效、便捷的数据库开发方式,它能够帮助开发人员快速构建强大的数据库访问层,提高开发效率和系统性能。无论是企业级应用开发还是快速开发原型系统,都可以考虑使用这种集成方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值