• 从零集成mybatis-plus


    Mybatis-Plus特性:

    1. 无侵入,即引入它不会对现有工程产生影响。
    2. 损耗小,启动就会自动注入基本的CRUD,内置通用Mapper、Service等,基本能满足大部分需求。
    3. 支持主键自动生成,其中包括分布式唯一ID生成器Sequence,内置代码生成器,采用代码或者maven插件可快速生成Mapper、Service、Controller层代码。
    4. 内置分页插件,无需自己计算,且支持多种数据库,还内置性能分析插件,可打印SQL语句以及执行时间,便于慢SQL查询及优化。

    框架结构

    从零开始使用Mybatis-Plus(基于SpringBoot)

    1. 使用IDE新建一个SpingBoot工程,添加相关依赖(以MySQL为例):
    1. <parent>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-parentartifactId>
    4. <version>2.7.5version>
    5. <relativePath/>
    6. parent>
    7. <groupId>com.brevitygroupId>
    8. <artifactId>mpartifactId>
    9. <version>0.0.1-SNAPSHOTversion>
    10. <name>mpname>
    11. <description>Mybatis-Plus Demodescription>
    12. <properties>
    13. <java.version>1.8java.version>
    14. properties>
    15. <dependencies>
    16. <dependency>
    17. <groupId>org.springframework.bootgroupId>
    18. <artifactId>spring-boot-starterartifactId>
    19. dependency>
    20. <dependency>
    21. <groupId>org.springframework.bootgroupId>
    22. <artifactId>spring-boot-starter-testartifactId>
    23. <scope>testscope>
    24. dependency>
    25. <dependency>
    26. <groupId>com.baomidougroupId>
    27. <artifactId>mybatis-plus-boot-starterartifactId>
    28. <version>3.5.2version>
    29. dependency>
    30. <dependency>
    31. <groupId>org.projectlombokgroupId>
    32. <artifactId>lombokartifactId>
    33. <optional>trueoptional>
    34. dependency>
    35. <dependency>
    36. <groupId>mysqlgroupId>
    37. <artifactId>mysql-connector-javaartifactId>
    38. <scope>runtimescope>
    39. dependency>
    40. <dependency>
    41. <groupId>junitgroupId>
    42. <artifactId>junitartifactId>
    43. dependency>
    44. dependencies>

    新建数据库mp,创建user表,插入了10条数据,SQL如下:

    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. );
    10. DELETE FROM user;
    11. INSERT INTO `mp`.`user` (`id`, `name`, `age`, `email`) VALUES
    12. (1, 'Tom', 18, 'Tom@mp.com'),
    13. (2, 'Jack', 20, 'Jack@mp.com'),
    14. (3, 'Brevity', 28, 'Brevity@mp.com'),
    15. (4, 'Brevity_520', 22, 'Brevity_520@mp.com'),
    16. (5, 'Billie', 24, 'Billie@mp.com'),
    17. (6, 'Jone', 18, 'Jone@mp.com'),
    18. (7, 'Jack', 20, 'Jack@mp.com'),
    19. (8, 'John', 28, 'John@mp.com'),
    20. (9, 'Sandys', 21, 'Sandys@mp.com'),
    21. (10, 'Bill', 24, 'Bill@mp.com');

    application.properties配置文件中添加数据库配置,具体内容如下所示:

    1. spring.datasource.url=jdbc:mysql://localhost:3306/mp?serverTimezone=Asia/Shanghai
    2. spring.datasource.username=root
    3. spring.datasource.password=root

    在SpringBoot启动类中添加@MapperScan注解,用来扫描Mapper文件夹,如下所示:

    1. @SpringBootApplication
    2. @MapperScan("com.brevity.mp.mapper")
    3. public class MpApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(MpApplication.class, args);
    6. }
    7. }

    编写User实体类以及UserMapper接口:

    1. @Data // Lombok注解
    2. public class User implements Serializable {
    3. private static final long SerialVersionUID = 1L;
    4. private Long id;
    5. private String name;
    6. private Integer age;
    7. private String email;
    8. }
    9. public interface UserMapper extends BaseMapper {
    10. }

    编写测试类开始测试代码:

    1. @SpringBootTest
    2. class MpApplicationTests {
    3. @Autowired
    4. private UserMapper userMapper;
    5. @Test
    6. void testMp() {
    7. System.err.println("-------select method--------");
    8. List userList = userMapper.selectList(null);
    9. Assert.assertEquals(10, userList.size());
    10. userList.forEach(System.out::println);
    11. }
    12. }

    至此,入门代码已经编写完毕,且测试成功,可以看到,没有编写任何xml文件就实现了查询,仅需要添加maven依赖,配置扫描注解即可,这就是它的强大之处之一。

  • 相关阅读:
    HIve 分桶表及作用
    分享券商量化交易接口申请流程
    [附源码]java毕业设计教室用电控制系统
    [论文笔记] Gunrock: A High-Performance Graph Processing Library on the GPU
    RabbitMQ的5大核心概念
    Android 开发板接入外接USB键盘App重启问题
    本地录像视频文件如何推送到视频监控平台EasyCVR进行AI视频智能分析?
    文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题
    SAP 智能机器人流程自动化(iRPA)解决方案分享
    RPA是什么?怎么成为RPA高手?
  • 原文地址:https://blog.csdn.net/Brevity6/article/details/127945147