• 硅谷课堂笔记


    1. Mybatis_plus复习

    mybatis_plus是好久之前学习的,现在已经有点遗忘了,还好老师讲了一些知识点。

    1.1 使用

    (1)导入mybatis_plus的依赖。
    springboot对应的mybatis_plus依赖,一定要选带starter启动器的。

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>最新版本</version>
    </dependency>
    <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    个人遇到的错误
    打开mybatis_plus首页发现最新版本,直接复制粘贴,后来一直报错,最后才发现引入的时spring对应的mybatis_plus依赖,不是springboot的。说多了都是泪呀
    在这里插入图片描述
    (2)配置文件配置数据库连接

    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
        username: root
        password: 747699
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    上面在引入mysql依赖的时候没有表明是mysql5还是mysql8,所以会使用自己电脑的版本。
    com.mysql.cj.jdbc.Driver 这里的cj表示默认使用mysql8的驱动。

    (3)创建实体类User

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private Long id;
        private String name;
        private Integer age;
        private String email;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (4)创建mapper接口类(核心)

    @Mapper
    public interface UserMapper extends BaseMapper<User> {
    }
    
    • 1
    • 2
    • 3

    @Mapper注解表示将我们的mapper注入到容器中。
    每个自定义的mapper接口都要继承BaseMapper,< User >表示mapper接口操作的表,也可以理解为实体类。 BaseMapper是mybatis_plus为我们封装好了许多常用数据库操作函数。

    (5)测试

    @SpringBootTest
    class MybatisPlusApplicationTests {
    
        @Autowired
        UserMapper userMapper;
        @Test
        void contextLoads() {
            List<User> users = userMapper.selectList(null);
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    其它相关操作mybatis_plus官方文档有相应介绍。

    1.2 mybatis_plus日志

    日志是方便我们在程序出现错误时,及时发现错误的原因。
    在配置文件中设置开启

    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    
    • 1
    • 2
    • 3

    执行mybatis_plus插入操作时,控制台日志输出

    在这里插入图片描述

    1.3 mybatis_plus主键策略

    通过@TableId注解实现,为什么说这是mybatis_plus主键策略呢,因为该注解的来源如下:
    import com.baomidou.mybatisplus.annotation.TableId;
    使用主键策略前提时,在数据库表中,将主键设置为自增。
    主键策略如下所示:

    在这里插入图片描述

    NONE:该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)即默认策略。

    AUTO:数据库ID自增。增加幅度为1。较为常用

    INPUT:用户输入ID,该类型可以通过自己注册自动填充插件进行填充。

    ASSIGN_ID:分配ID (主键类型为number或string),number类型较为常用,会默认为我们分配ID,也遵循自动增长原则,但是增长的幅度不确定。

    ASSIGN_UUID:分配UUID (主键类型为 string) ,主键中一定包含字符,对于需要主键排序的情况不适用,所以不如ASSIGN_ID常用。
    总结
    一般在插入数据时,我们是不会设置主键值,所以此时主键策略起到了很大作用。一帮使用ASSIGN_ID或AUTO策略。
    例如:在user类的主键加入逐渐策略

    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    
    • 1
    • 2

    执行插入时,就可以不用设置主键值,系统会通过策略自动生成主键id。下面是一条插入示例

     void insert(){
            User user = new User();
            user.setAge(23);
            user.setEmail("mengfanxiaonb@gmail.com");
            user.setName("mfx");
    
            int insert = userMapper.insert(user);
            System.out.println(insert);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    执行两次插入操作:
    在这里插入图片描述
    可以发现两次的id都是随机的,但是有一个特点都是自增,但是增加的幅度不同。

    1.4 分页查询

    (1)配置分页插件配置文件,创建MpConfig配置类,Mp=Mybatis_plus。

    @Configuration
    public class MpConfig {
        /*分页插件*/
        @Bean
        public PaginationInterceptor paginationInterceptor(){
            return new PaginationInterceptor();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (2)分页查询
    selectPage函数执行分页查询操作,两个参数:
    Page:使用Page类设置起始页和每页数据条数,(1,3)表示第一页,每页包含三条数据。
    QueryWrapper:查询条件,具体见官方文档。

    Page<User> userPage = userMapper.selectPage(new Page<>(1,3), null);
    // 根据page查询到的数据
    System.out.println(userPage.getRecords());
    // 表中数据总条数
    System.out.println(userPage.getTotal());
    // 总页数
    System.out.println(userPage.getPages());
    // 每页大小
    System.out.println(userPage.getSize());
    // 是否有下一页
    System.out.println(userPage.hasNext());
    // 是否由前置页
    System.out.println(userPage.hasPrevious());
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    结果如下
    在这里插入图片描述
    注意:如果不实现分页插件配置类,也可以查询,只是每次查询得到的结果都是所有数据。即能查询,不能分页查询。

  • 相关阅读:
    javaVUE技术小区车辆档案车位管理系统设计与实现计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    华为云云耀云服务器L实例评测|Ubuntu系统MySQL 8.1.0 Innovation压测
    ISCSI - 磁盘管理
    【Echarts多种曲线实例】Echarts多条曲线不同时间轴对比(附代码)
    穿越晋商百年-体验非遗文化
    MySQL数据库基础理论、部署与使用
    ArcGIS综合制图教程,简单上手!
    《向量数据库指南》——Milvus Cloud构建 RAG
    外边距塌陷原因和解决方式
    算法练习-LeetCode 剑指 Offer 16. 数值的整数次方
  • 原文地址:https://blog.csdn.net/weixin_43424325/article/details/125558177