初始化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());}}
}
测试结果:第一个主键查询
总结:
一、优势
-
高效开发
- 简化了数据库操作,通过 MyBatis-Plus 提供的丰富功能,如条件构造器、分页插件等,可以快速构建复杂的数据库查询和操作逻辑,大大提高开发效率。
- 减少了大量的 SQL 编写工作,尤其是重复性的增删改查操作。
-
强大的功能
- 提供了代码生成器,可以根据数据库表结构自动生成实体类、Mapper 接口和 XML 文件,节省了大量的手动编码时间。
- 内置分页插件,轻松实现分页查询,无需手动编写分页 SQL。
- 支持逻辑删除,方便对数据进行软删除操作,保证数据的安全性和完整性。
-
易于维护
- 代码结构清晰,遵循 Spring Boot 的开发规范,易于理解和维护。
- MyBatis-Plus 的封装使得数据库操作更加统一和规范,减少了因不同开发人员编写风格不同而带来的维护难题。
二、集成步骤
-
添加依赖
- 在项目的 pom.xml 文件中添加 MyBatis-Plus 的依赖包。
-
配置数据源
- 在 application.properties 或 application.yml 文件中配置数据库连接信息,包括数据库 URL、用户名、密码等。
-
创建实体类
- 根据数据库表结构创建对应的实体类,并使用 MyBatis-Plus 提供的注解进行标识,如 @TableName 注解用于指定表名。
-
创建 Mapper 接口
- 继承 MyBatis-Plus 提供的 BaseMapper 接口,无需编写具体的 SQL 语句,即可实现基本的数据库操作方法。
-
使用代码生成器(可选)
- 如果需要快速生成代码,可以使用 MyBatis-Plus 的代码生成器,根据数据库表结构自动生成实体类、Mapper 接口和 XML 文件。
三、常见应用场景
-
企业级应用开发
- 在企业级应用中,通常需要处理大量的数据和复杂的业务逻辑。Spring Boot 集成 MyBatis-Plus 可以帮助开发人员快速构建高效、稳定的数据库访问层,提高开发效率和系统性能。
-
微服务架构
- 在微服务架构中,每个微服务都可能需要独立访问数据库。MyBatis-Plus 可以方便地与 Spring Boot 集成,为每个微服务提供独立的数据库操作能力,同时保证数据的一致性和完整性。
-
快速开发原型系统
- 当需要快速开发一个原型系统时,MyBatis-Plus 的代码生成器可以大大缩短开发时间,让开发人员能够更快地验证业务逻辑和系统功能。
总之,Spring Boot 集成 MyBatis-Plus 是一种高效、便捷的数据库开发方式,它能够帮助开发人员快速构建强大的数据库访问层,提高开发效率和系统性能。无论是企业级应用开发还是快速开发原型系统,都可以考虑使用这种集成方式。