MyBatis-Plus第一天

在这里插入图片描述

MyBatis-Plus第一天

总结

1.MyBatisPlus简介

2.MyBatisPlus概述–主要特性和核心组件

3.对比Mybatis的不同

4.MybatisPlus入门案例(采用Springboot整合)

5.MybatisPlus数据库增删改查

一,MybBatisPlus概述

1.MyBatisPlus简介

MyBatis Plus 是一个基于 MyBatis 的增强工具,旨在简化开发过程,提高开发效率。它提供了许多实用的功能,如代码生成器、分页插件、条件构造器等,使得开发者可以更专注于业务逻辑的实现,而不必过多关注 MyBatis 的配置和 SQL 编写。

2.MyBatisPlus概述

2.1主要特性

**无侵入:**MyBatis Plus 在 MyBatis 的基础上进行扩展,不会对 MyBatis 的现有功能造成影响。
**依赖少:**仅依赖于 MyBatis 和 Spring,没有其他额外的依赖。
**强大的 CRUD 操作:**内置通用的 Mapper 和 Service,只需要简单的配置即可实现单表的 CRUD 操作。
**支持 Lambda 表达式:**通过 Lambda 表达式,方便地进行 SQL 操作。
**支持主键自动生成:**支持多种主键生成策略,如 UUID、自增 ID 等。
**支持 ActiveRecord 模式:**实体类只需继承 Model 类即可进行 CRUD 操作。
**内置分页插件:**基于 MyBatis 物理分页,开发者无需手动编写分页 SQL。
**内置性能分析插件:**可输出 SQL 语句及其执行时间,帮助开发者优化 SQL。
**内置全局拦截插件:**提供全局的 SQL 拦截功能,方便进行 SQL 改写和日志记录。

2.2核心组件

**BaseMapper:**提供了通用的 CRUD 方法,如 insert、delete、update、select 等。
**IService:**提供了更丰富的服务层方法,如分页查询、批量操作等。
**Wrapper:**条件构造器,用于构建复杂的查询条件。
**PaginationInnerInterceptor:**分页插件,支持物理分页。
**AutoGenerator:**代码生成器,可以根据数据库表结构自动生成实体类、Mapper 接口、Service 接口及其实现类。

3.对比Mybatis的不同

3.1实现方式不同

(1)Mybatis是基于XML或注解方式进行数据库操作的持久化框架,它提供了简单的CRUD操作以及动态生成SQL等功能;

(2)Mybatis_Plus是在Mybatis框架上的封装,只做增强不做改变,增强简化后的API更加方便进行开发,并且在性能、效率、易用性方面都有一定优化。

3.2功能支持不同

(1)Mybatis相对较为原始,需要手写大量的SQL以完成各种功能的实现;

(2)Mybatis_Plus相比与Mybatis提供了很多额外的功能,例如像条件构造器、代码生成器、分页插件、JSON处理器、枚举处理器等实用组件,使得开发者可以轻松快速完成业务逻辑的开发。

3.3编程风格差异

(1)Mybatis的编程风格更加传统,需要定义mapper.xml文件,并根据传入的参数使用相应的SQL查询语句,需要实现Mybatis提供的各种方法;

(2)Mybatis_Plus具有很多针对CRUD进行的简化方法,通过继承BaseMapper以及使用Lambda表达式,可以让我们类似使用接口编程的方式进行数据库操作。

二,MybatisPlus入门案例(采用Springboot整合)

1.创建新模块,选择Spring初始化,并配置模块相关基础信息

2.选择当前模块需要使用的技术栈

3.手动添加MyBatisPlus起步等所需依赖以及搭建框架

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

<?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>
    <groupId>com.itxy</groupId>
    <artifactId>MybatisPlusDemo00</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>MybatisPlusDemo00</name>
    <description>MybatisPlusDemo00</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <!--spring-boot依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
              <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!--spring-boot-starter-test依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <!--druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>
        <!--junit依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
        </dependency>

    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>



</project>

4.制作测试表

create database if not exists mybatisplus_db character set utf8;
use mybatisplus_db;
CREATE TABLE user (
            id bigint(20) primary key auto_increment,
            name varchar(32) not null,
            password  varchar(32) not null,
            age int(3) not null ,
            tel varchar(32) not null
);
insert into user values(null,'tom','123456',12,'12345678910');
insert into user values(null,'jack','123456',8,'12345678910');
insert into user values(null,'jerry','123456',15,'12345678910');
insert into user values(null,'tom','123456',9,'12345678910');
insert into user values(null,'snake','123456',28,'12345678910');
insert into user values(null,'张益达','123456',22,'12345678910');
insert into user values(null,'张大炮','123456',16,'12345678910');

5.创建实体类

package com.itxy.mybatisplusdemo00.pojo;

public class User {
    private Long id;
    private String name;
    private String password;
    private Integer age;
    private String tel;
//自行添加getter、setter、toString()等方法

6.设置Jdbc参数

#此配置文件用于Spring应用中配置数据源。
#使用Alibaba的Druid连接池来管理MySQL数据库连接。
#配置包括驱动类名、数据库URL、用户名和密码。
#这些配置项将用于连接位于本地主机上的mybatisplus_db数据库。
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus_db?serverTimezone=UTC
    username: root
    password: gaohe6666

7.定义数据接口,继承BaseMapper

package com.itxy.mybatisplusdemo00.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itxy.mybatisplusdemo00.pojo.User;
import org.apache.ibatis.annotations.Mapper;

/*这是 MyBatis 的注解,它用于将UserDao接口注册为MyBatis的Mapper
,使得MyBatis可以自动扫描并识别该接口,进而与数据库的表进行交互。*/
@Mapper
/*通过继承 BaseMapper,UserDao 自动拥有了基本的数据库操作方法
例如 insert、delete、update、selectById 等。*/
public interface UserDao extends BaseMapper<User> {
}

8.通过查询功能测试

import com.itxy.mybatisplusdemo00.dao.UserDao;
import com.itxy.mybatisplusdemo00.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;
/*作用是用来标识这个类是一个Spring Boot的测试类,Spring Boot会为这个测试类提供一个运行的上下文环境。在测试时,它会启动整个Spring应用程序上下文*/
@SpringBootTest
/*作用是用来标识这个类是一个JUnit4的测试类,Spring Boot默认使用JUnit4作为测试框架,因此需要标识这个类*/
@RunWith(SpringJUnit4ClassRunner.class)
public class MpAppTests {
    /*注入UserDao*/
    @Autowired
    private UserDao userDao;
    /*查询所有*/
    @Test
    public void getAll() {
        List<User> userList = userDao.selectList(null);
        System.out.println(userList);
    }
 }

三MybatisPlus数据库增删改查

1.通过id查询(条件查询)

/*通过id查询*/

    @Test
    public void getById() {
        User user = userDao.selectById(1);
        System.out.println(user);
    }

2.增加用户信息

 /*新增*/
    @Test
    public void insert() {
        User user = new User();
        user.setId(8L);
        user.setName("小杨");
        user.setPassword("12345689");
        user.setAge(20);
        user.setTel("13800138000");
        userDao.insert(user);
    }

3.修改用户信息

 /*修改*/
    @Test
    public void update() {
        User user = new User();
        user.setId(3L);
        user.setName("Jerry");
        user.setAge(25);
        userDao.updateById(user);
    }

4.删除用户信息

  /*删除*/
    @Test
    public void delete() {
        userDao.deleteById(1);
    }

update() {
User user = new User();
user.setId(3L);
user.setName(“Jerry”);
user.setAge(25);
userDao.updateById(user);
}


### 4.删除用户信息

```java
  /*删除*/
    @Test
    public void delete() {
        userDao.deleteById(1);
    }
### 回答1: 我推荐使用MyBatis-Plus的LocalDateTimeTypeHandler来处理日期和时间,它可以轻松地将LocalDateTime类型的数据存储到MySQL数据库,而且可以轻松地通过MyBatis-Plus的API获取上月的时间。 ### 回答2: 使用Mybatis-Plus查询上个月的时间可以按照以下步骤进行操作: 步骤1:首先,获取当前时间,并利用Java提供的Calendar类进行日期计算。可以使用以下代码获取当前时间并计算上个月的时间: ```java import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.MONTH, -1); Date lastMonth = calendar.getTime(); System.out.println(lastMonth); } } ``` 步骤2:接下来,根据上个月的时间作为查询条件进行数据库查询。使用Mybatis-Plus进行查询时,可以通过Wrapper对象定义查询条件。具体的代码如下: ```java import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ... Date lastMonth = ...; // 上个月的时间 QueryWrapper<User> queryWrapper = new QueryWrapper<>(); queryWrapper.ge("create_time", lastMonth); // 查询大于等于上个月的时间 List<User> userList = userMapper.selectList(queryWrapper); ``` 这里的例子假设我们使用Mybatis-Plus框架进行用户表(User)的查询,create_time字段表示记录创建的时间。根据查询条件`create_time >= 上个月时间`,使用`selectList()`方法进行查询,并将结果保存在userList列表中。 请注意,具体的代码细节可能会因为数据库表以及实体类的定义而有所不同,请根据实际情况进行相应的调整。以上就是使用Mybatis-Plus查询上个月时间的方法。 ### 回答3: 在使用Mybatis-Plus查询上个月的时间,我们可以借助Java的日期时间类来完成。首先,我们需要获取当前日期的上个月时间,可以使用Java 8的日期时间API的`LocalDate`类来进行操作。下面是一个示例代码: ```java // 获取当前日期 LocalDate currentDate = LocalDate.now(); // 获取上个月的时间 LocalDate lastMonth = currentDate.minusMonths(1); // 获取上个月的起始时间和结束时间 LocalDate firstDayOfMonth = lastMonth.withDayOfMonth(1); // 上个月的第一天 LocalDate lastDayOfMonth = lastMonth.withDayOfMonth(lastMonth.lengthOfMonth()); // 上个月的最后一天 // 转换为需要的格式,如字符串、日期对象等 String firstDayOfMonthStr = firstDayOfMonth.toString(); String lastDayOfMonthStr = lastDayOfMonth.toString(); ``` 上述代码中,我们首先获取当前日期`LocalDate.now()`,然后通过`minusMonths(1)`方法减去一个月得到上个月的日期。接着,通过`withDayOfMonth(1)`方法获取上个月的第一天,`withDayOfMonth(lastMonth.lengthOfMonth())`方法获取上个月的最后一天。最后,根据需要将日期转换为字符串或日期对象即可。 在Mybatis-Plus中,可以使用`QueryWrapper`或`LambdaQueryWrapper`类组装查询条件,调用相应的查询方法查询数据库中符合条件的数据。结合上述获取的上个月时间,可以编写类似如下的代码: ```java QueryWrapper<Entity> queryWrapper = new QueryWrapper<>(); queryWrapper.between("create_time", firstDayOfMonth, lastDayOfMonth); List<Entity> resultList = entityMapper.selectList(queryWrapper); ``` 以上代码中,`QueryWrapper`对象`queryWrapper`用于设置查询条件,通过`between`方法指定`create_time`字段在上个月的范围内。最后,调用`selectList`方法执行查询,将符合条件的数据存入`resultList`中。 需要注意的是,以上代码只是示例,需要根据具体的数据表和实体进行相应的调整。同时,Mybatis-Plus还提供了更多强大的查询方法,可以根据具体需求选择合适的方法来完成查询操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值