• Mybatis-Plus知识点[MyBatis+MyBatis-Plus的基础运用]



    前言

    Mybatis-Plus是简化开发的一款强大工具。学完Mybatis-Plus会使我们开发更加简单快速~

    一、了解Mybatis-Plus

    1.简介

    MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

    2.Mybatis-Plus具有的特性

    • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
    • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
    • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
    • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
    • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
    • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
    • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
    • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
    • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
    • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
    • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
    • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

    3.支持数据库

    大多数主流数据库都可以使用。

    • MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb

    • 达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库

    4.框架结构

    5.官网链接

    想要了解更多可进官网学习哦~

    简介 | MyBatis-Plus

    二、快速开始

    2.1.创建数据库以及表

    代码:

    1. -- 建库
    2. create database study;
    3. use study;
    4. -- 建表
    5. DROP TABLE IF EXISTS `user`;
    6. CREATE TABLE `user` (
    7. `user_id` int(32) NOT NULL AUTO_INCREMENT COMMENT '用户id',
    8. `user_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称',
    9. `user_password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户密码',
    10. `user_email` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户邮箱(用户账号)',
    11. `user_role` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户角色',
    12. `user_status` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户状态(0:正常,1:禁用)',
    13. PRIMARY KEY (`user_id`) USING BTREE
    14. ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
    15. INSERT INTO `user` VALUES (1, '王五', '123456', 'wangwu@itcast.cn', 'ADMIN', '0');
    16. INSERT INTO `user` VALUES (2, '张三', '12345', 'zhangsan@itcast.cn', 'USER', '0');
    17. INSERT INTO `user` VALUES (3, '李四', '1234', 'lisi@itcast.cn', 'USER', '0');
    18. INSERT INTO `user` VALUES (4, '赵六', '666666', 'zhaoliu@itcast.cn', 'USER', '0');

    查看建好的表 

    2.2.创建工程

    1.创建一个itcast-mybatis-plus的maven项目

     2.导入所需的依赖

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>org.examplegroupId>
    7. <artifactId>itcast-mybatis-plusartifactId>
    8. <packaging>pompackaging>
    9. <version>1.0-SNAPSHOTversion>
    10. <modules>
    11. <module>itcast-mybatis-plus-simplemodule>
    12. modules>
    13. <dependencies>
    14. <dependency>
    15. <groupId>com.baomidougroupId>
    16. <artifactId>mybatis-plusartifactId>
    17. <version>3.1.1version>
    18. dependency>
    19. <dependency>
    20. <groupId>mysqlgroupId>
    21. <artifactId>mysql-connector-javaartifactId>
    22. <version>8.0.11version>
    23. dependency>
    24. <dependency>
    25. <groupId>com.alibabagroupId>
    26. <artifactId>druidartifactId>
    27. <version>1.1.12version>
    28. dependency>
    29. <dependency>
    30. <groupId>org.projectlombokgroupId>
    31. <artifactId>lombokartifactId>
    32. <optional>trueoptional>
    33. <version>1.18.20version>
    34. dependency>
    35. <dependency>
    36. <groupId>junitgroupId>
    37. <artifactId>junitartifactId>
    38. <version>4.12version>
    39. dependency>
    40. <dependency>
    41. <groupId>org.slf4jgroupId>
    42. <artifactId>slf4j-log4j12artifactId>
    43. <version>2.0.1version>
    44. dependency>
    45. dependencies>
    46. <properties>
    47. <maven.compiler.source>8maven.compiler.source>
    48. <maven.compiler.target>8maven.compiler.target>
    49. properties>
    50. <build>
    51. <plugins>
    52. <plugin>
    53. <groupId>org.apache.maven.pluginsgroupId>
    54. <artifactId>maven-compiler-pluginartifactId>
    55. <configuration>
    56. <source>1.8source>
    57. <target>1.8target>
    58. configuration>
    59. plugin>
    60. plugins>
    61. build>
    62. project>

    3.查看依赖是否导入成功

    2.3 Mybatis+Mybatis-Plus的使用

    2.3.1创建一个itcast-mybatis-plus-simple的maven项目

     2.3.2写UserMapper接口

    1. public interface UserMapper extends BaseMapper {
    2. //public interface UserMapper {
    3. List findAll();
    4. }

    继承BaseMapper,User是实体类

     2.3.3写User实体类

    1. package cn.itcast.study.simple.pojo;
    2. import com.baomidou.mybatisplus.annotation.TableName;
    3. import lombok.AllArgsConstructor;
    4. import lombok.Data;
    5. import lombok.NoArgsConstructor;
    6. /**
    7. * lombok注解 自动生成get/set 构造方法
    8. * */
    9. @Data
    10. @NoArgsConstructor//生成无参构造
    11. @AllArgsConstructor//生成有参构造
    12. //@TableName("user")
    13. public class User {
    14. private Integer userId;
    15. private String userName;
    16. private String userPassword;
    17. private String userEmail;
    18. private String userRole;
    19. private String userStatus;
    20. }

    2.3.4 用mybatis-plus里的方法直接调用

    2.3.5 效果图

    从日志可看出自动生成的sql代码

     可以看出mybatis-plus自动将实体类首字母小写作为表名,字段名是将第一个大写字母自动变成‘_+小写字母’ 。如果表名不是user也可在实体类上加注解@TableName("表名")


    总结

    这是MyBatis和MyBatis-Plus的运用部分,后期会发Spring+Mybatis+Mybatis-Plus的使用和SpringBoot+Mybatis+Mybatis-Plus的使用,以后简单的增删改查再也不用自己写sql了,哈哈~

  • 相关阅读:
    vue2中实现滚动数字时钟效果
    我国智慧燃气建设应用过程中,有哪些关键问题?
    分布式前修课:Zookeeper锁实现方式
    虚幻阴影整理
    spring cloud 之 Netflix Eureka
    Go分布式缓存 单机并发缓存(day2)
    基于C++的RSA公钥加密算法实验
    【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式
    程序员自由创业周记#13:第一桶金
    微服务架构的未来:跨边界的云原生整合
  • 原文地址:https://blog.csdn.net/weixin_52258054/article/details/127645166