mybatisplus 开发流程
目录
什么是mybatisplus?
创建项目
先创建一个简单的Java项目编辑
引入依赖
1.引入父依赖
2.引入其他依赖
springboot配置
application.yml
qppication-dev.yml
创建包
实体类
映射(创建一个接口)
构建测试环境
进行方法的实现
增
删
改
查
mybatis分页原理
什么是mybatisplus?
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生.
官网地址:MyBatis-Plus 🚀 为简化开发而生
创建项目
先创建一个简单的Java项目
引入依赖
1.引入父依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.13</version>
</parent>
该父依赖定义了大量常用依赖的默认版本号。当你的项目引入了这个父 依赖 后,在声明依赖时可以省略版本号。
2.引入其他依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
以上依赖会自动引入构建 Web 应用所需的核心组件,主要包括:
Spring MVC:Spring 框架提供的用于构建 Web 应用的模块
Tomcat:Spring Boot 默认集成的嵌入式 Servlet 容器,用于处理 HTTP 请求
Jackson:用于处理 JSON 数据的 Java 库
下面我们引入与数据库相关的依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
上述依赖可以帮助我们建立数据库连接
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.18</version>
</dependency>
上述依赖帮助数据库连接池管理
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.10.1</version>
</dependency>
上述依赖为mybatisplus的依赖,他的主要功能是基于 MyBatis 进行了增强,提供了大量的通用 CRUD(创建、读取、更新、删除)操作方法,开发者无需编写复杂的 SQL 语句,通过调用 MyBatis-Plus 提供的方法就能完成基本的数据库操作。
下面这个依赖通过注解自动生成常见的代码(如 getter、setter、构造函数、toString()
方法等),从而让代码更简洁、易读。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
下面这个依赖帮助编写单元测试
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
下面这个依赖集成了多个在 Java 测试领域广泛使用的框架,这些框架为不同类型的测试提供了丰富的功能和便捷的工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
引入依赖之后,我们开始创建数据库,这里就不进行详细的创建过程了
数据库创建完成后,我们开始构建项目。
springboot配置
application.yml
spring:
profiles:
active: dev
qppication-dev.yml
#端口
server:
port: 9099
#数据源配置
spring:
datasource:
druid:
url: jdbc:mysql://localhost:3306/book_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
port: 6379
host: localhost
database: 0
#日志
logging:
level:
com.ffyc.springboot: debug
创建包
实体类
@TableName("book_tab")//与数据库表名一致
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
@TableId(value = "book_id", type = IdType.AUTO)//主键,设置为自增
private Integer id;//主键
@TableField("book_title")//其他列使用TableField,与数据库字段一一对应
private String title;
@TableField("book_author")
private String author;
@TableField("book_price")
private Double price;
@TableField("book_desc")
private String descx;
}
映射(创建一个接口)
@Mapper//该接口生成代理实现类,无需手动实现代码
public interface IBookMapper extends BaseMapper<Book> {
}
构建测试环境
@SpringBootTest//测试的注解
@RunWith(SpringJUnit4ClassRunner.class)
public class IBookMapperTest {
@Autowired//依赖注入
private IBookMapper mapper;
}
进行方法的实现
增
@Test
public void testSave(){
for (int i = 21; i < 40; i++) {
Book book =new Book();
book.setTitle("西游记"+i);
book.setAuthor("吴承恩"+i);
book.setDescx("四人");
book.setPrice(123.34+i);
mapper.insert(book);
}
}
删
@Test
public void testDelete(){
int ID=-324280319;
mapper.deleteById(ID);
}
改
@Test
public void testUpdate(){
Book book =new Book();
book.setId(1);
book.setDescx("四人取经");
mapper.updateById(book);
}
查
全查询
@Test
public void testFindAll(){
//mapper.selectList(null);
System.out.println(mapper.selectList(null));
}
模糊查询
@Test
public void testFindCondition(){
LambdaQueryWrapper<Book> queryWrapper=new LambdaQueryWrapper<>();
//queryWrapper.like(Book::getAuthor,"吴");
queryWrapper.eq(Book::getAuthor,"吴承恩").eq(Book::getTitle,"西游记");
}
mybatis分页原理
解决了数据量过大的问题,显示规定范围内的数据量
@Test
public void testPage() {
IPage<Book> page = new Page<>();
page.setCurrent(1);
page.setSize(20); //limit 0,50
LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
IPage<Book> bookIPage = mapper.selectPage(page, queryWrapper);
System.out.println(bookIPage.getRecords());
// books.forEach(System.out::println);
}