初始化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());
}
}
}
测试结果:第一个主键查询
总结:
一、优势
-
高效开发
- 简化了数据库操作,通过 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 是一种高效、便捷的数据库开发方式,它能够帮助开发人员快速构建强大的数据库访问层,提高开发效率和系统性能。无论是企业级应用开发还是快速开发原型系统,都可以考虑使用这种集成方式。
标签:SpringBoot,spring,boot,Plus,MyBatis,import,com From: https://blog.csdn.net/2301_78714573/article/details/142055053