• 从零集成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依赖,配置扫描注解即可,这就是它的强大之处之一。

  • 相关阅读:
    Vue-插槽
    手机一键换ip地址,解锁网络自由
    Matplotlib补充:科研绘图利器(写论文、数据可视化必备)
    ASP.NET内置对象
    RGMII 与 GMII 转换电路设计
    Linux各目录的作用
    到github上去学别人怎么写代码
    数据化管理洞悉零售及电子商务运营——商品中的数据化管理
    408 | 【2019年】计算机统考真题 自用回顾知识点整理
    C++-头文件书写规范(二):头文件中的保护措施【#ifndef #define...#endif 】【防止多个源文件同时包含同一个头文件时产生的声明冲突】
  • 原文地址:https://blog.csdn.net/Brevity6/article/details/127945147