• MyBatisPlus的使用入门


    一、简介
    官网:http://mp.baomidou.com/
    参考教程: http://mp.baomidou.com/guide/
    MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
    二、特性
    无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
    损耗小 :启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
    强大的 CRUD 操作 :内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
    支持 Lambda 形式调用 :通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
    支持多种数据库 :支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
    支持主键自动生成 :支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
    支持 XML 热加载 :Mapper 对应的 XML 支持热加载,对于简单的 CRUD 操作,甚至可以无 XML 启动
    支持 ActiveRecord 模式 :支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进 行强大的 CRUD 操作
    支持自定义全局通用操作 :支持全局通用方法注入( Write once, use anywhere )
    支持关键词自动转义 :支持数据库关键词(order、key......)自动转义,还可自定义关键词
    内置代码生成器 :采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
    内置分页插件 :基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
    内置性能分析插件 :可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
    内置全局拦截插件 :提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
    内置 Sql 注入剥离器 :支持 Sql 注入剥离,有效预防 Sql 注入攻击
    测试项目: mybatis_plus
    数据库:mybatis_plus
    一、创建并初始化数据库
    1、创建数据库:
    mybatis_plus
    2、创建 User
    其表结构如下:

    其对应的数据库 Schema 脚本如下:

    1. DROP TABLE IF EXISTS user;
    2. CREATE TABLE user
    3. (
    4. id BIGINT(20) NOT NULL COMMENT '主键ID',
    5. name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    6. age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    7. email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    8. PRIMARY KEY (id)
    9. );

     其对应的数据库 Data 脚本如下:

     

    二、初始化工程
    使用 Spring Initializr 快速初始化一个 Spring Boot 工程
    Group:com.atguigu
    Artifact:mybatis-plus
    版本:2.2.1.RELEASE
    三、添加依赖
    1、引入依赖
    spring-boot-starter spring-boot-starter-test
    添加:mybatis-plus-boot-starter、MySQL、lombok、
    在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写
    1. <dependencies>
    2. 2 <dependency>
    3. 3 <groupId>org.springframework.bootgroupId>
    4. 4 <artifactId>spring-boot-starterartifactId>
    5. 5 dependency>
    6. 6
    7. 7 <dependency>
    8. 8 <groupId>org.springframework.bootgroupId>
    9. 9 <artifactId>spring-boot-starter-testartifactId>
    10. 10 <scope>testscope>
    11. 11 dependency>
    12. 12
    13. 13
    14. 14 <dependency>
    15. 15 <groupId>com.baomidougroupId>
    16. 16 <artifactId>mybatis-plus-boot-starterartifactId>
    17. 17 <version>3.3.1version>
    18. 18 dependency>
    19. 19
    20. 20
    21. 21 <dependency>
    22. 22 <groupId>mysqlgroupId>
    23. 23 <artifactId>mysql-connector-javaartifactId>
    24. 24 dependency>
    25. 25
    26. 26
    27. 27 <dependency>
    28. 28 <groupId>org.projectlombokgroupId>
    29. 29 <artifactId>lombokartifactId>
    30. 30 dependency>
    31. 31 dependencies>
    注意: 引入 MyBatis-Plus 之后请不要再次引入 MyBatis 以及 MyBatis-Spring ,以避免因版本差异导致的问题。
    2、idea中安装lombok插件
    四、配置
    application.properties 配置文件中添加 MySQL 数据库的相关配置:
    mysql5
    1. #mysql数据库连接
    2. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    3. spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus
    4. spring.datasource.username=root
    5. spring.datasource.password=123456
    mysql8以上(spring boot 2.1)
    注意: driver和url的变化
    1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    2. spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
    3. spring.datasource.username=root
    4. spring.datasource.password=123456
    注意:
    1、这里的 url 使用了 ?serverTimezone=GMT%2B8 后缀,因为Spring Boot 2.1 集成了 8.0版本的
    jdbc驱动,这个版本的 jdbc 驱动需要添加这个后缀,否则运行测试用例报告如下错误:
    java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or
    represents more
    2、这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver ,在 jdbc 8 中 建议使用这个
    驱动,之前的 com.mysql.jdbc.Driver 已经被废弃,否则运行测试用例的时候会有 WARN 信息

     

    五、编写代码
    1、主类
    在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹
    注意: 扫描的包名根据实际情况修改
    2、实体
    创建包 entity 编写实体类 User.java (此处使用了 Lombok 简化代码)

    查看编译结果 

    3、mapper
    创建包 mapper 编写Mapper 接口 UserMapper.java
    六、开始使用
    添加测试类,进行功能测试:
    注意:
    IDEA userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确
    的执行。
    为了避免报错,可以在 dao 层 的接口上添加 @Repository 注解
    控制台输出:

     

    通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

    七、配置日志
    查看 sql 输出日志
    1. #mybatis日志
    2. mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  • 相关阅读:
    SpringCloudAlibaba Gateway(一)简单集成
    C++ 之多态总结
    CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势
    面渣逆袭:微服务三十三问,两万字图文详解,速收藏
    [Vue3]简易时间轴组件
    LuatOS-SOC接口文档(air780E)--eink - 墨水屏操作库
    ARM 体系结构要点总结
    PaddlePaddle自然语言处理总结
    【每日一题Day320】LC2651计算列车到站时间 | 数学
    走进JVM的内存模型
  • 原文地址:https://blog.csdn.net/weixin_59334478/article/details/128165562