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

  • 相关阅读:
    Java 语言实现简易版扫码登录
    java开发中 防止重复提交的几种方案
    MCU看门狗
    LeetCode:261. 以图判树 - Python
    科技资讯|2023全球智能手表预估出货1.3亿块,智能穿戴提升AI功能
    HBuilderX使用代码托管功能,安装git插件
    Linux 进程基础概念-进程状态、进程构成、进程控制
    MySQL-DDL数据定义语言-约束
    py2_Python 3 的六大数据类型
    嵌入式学习 - 用电控制电
  • 原文地址:https://blog.csdn.net/Brevity6/article/details/127945147