如何整合 springboot + mybatis-plus(系列一)

Posted 石头StoneWang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何整合 springboot + mybatis-plus(系列一)相关的知识,希望对你有一定的参考价值。

如何整合 springboot + mybatis-plus(系列一)

背景

整合 springboot + mybatis-plus,其实就是整合 springboot + mybatis + mybatis-plus,本来 mybatis-plus 就能自动包含 mybatis

步骤

非常简单,

  1. 用 IDEA 新建项目,选择 Spring Initializr 的项目, Custom 填入 https://start.aliyun.com/,利用阿里的开发的模板进行创建

  2. 勾选 lombok, Spring Web, MyBatis Plus Framework 进行创建即可

    注意,勾选 MyBatis Plus Framework 即可,不需要和 MyBatis Framework 两个同时勾选

  3. 添加 jdbc 的依赖,比如 mysql

    毕竟 IDEA 向导建Project的过程不知道你用什么类型的库,所以这个需要自己自行加入

  4. 配置连接

    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.username=xxx
    spring.datasource.password=xxx
    spring.datasource.url=jdbc:mysql://localhost:3306/mp
    
    # 打印 mybatis 日志( logging.level. 后的包名,改成自己的 XxxMapper.java 所在的包)
    logging.level.com.wyf.test.mybatisplusdemo.mapper=debug
    mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
    
  5. 建表

    CREATE TABLE `mp_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '姓名',
      `age` smallint(6) NOT NULL COMMENT '年龄',
      `gender` tinyint(255) NOT NULL COMMENT '性别',
      `create_time` datetime NOT NULL COMMENT '创建时间',
      `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    
  6. 写 model 类

    @Data
    public class MpUser {
        private Integer id;
        private Short age;
        private Byte gender;
        private Date createTime;
        private Date updateTime;
    }
    
  7. 写 Mapper 接口,注意继承 BaseMapper 并填入泛型,泛型对应的 model 类

    @Mapper
    @Repository
    public interface MpUserMapper extends BaseMapper<MpUser> {
    }
    

    注意,写上 @Mapper 注解就不需要写扫描包路径的配置,我一直绝对的写个字串的包路径一点都不优雅. 另外写 @Repository 的目的是让 IDEA 不要提示找不到Bean注入(实际存在),只写 @Repository 留 @Mapper 是不行的

  8. 写 Junit 测试类, 新建的Project有个现成的 XxxxTests,直接拿来改一下即可

    @SpringBootTest
    class MybatisPlusDemoApplicationTests {
        @Autowired
        private MpUserMapper mpUserMapper;
    
        @Test
        void test() {
            List<MpUser> mpUsers = mpUserMapper.selectList(null);
            for (MpUser mpUser : mpUsers) {
                System.out.println(mpUser);
            }
        }
    }
    

至此,整合完毕

补充

1、实验结果,如果表名和实体类的名字不同,比如 MpUser 的表名叫做 t_user,则必须在 MpUser 类上加 @TableName(“t_user”)

2、可以看见,引入 mybatis-plus-boot-starter 即可,不需要将 mybatis 的 starter 的依赖引入。pom参考:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.2</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.26</version>
</dependency>

以上是关于如何整合 springboot + mybatis-plus(系列一)的主要内容,如果未能解决你的问题,请参考以下文章

如何整合SpringBoot和Mybatis框架?

SpringBoot整合Mybatis

SpringBoot:Mybatis整合PostgreSQL

企业分布式微服务云SpringCloud SpringBoot mybatis (十三)Spring Boot整合MyBatis

SpringBoot之整合MyBatis

SpringBoot整合Mybatis连接Oracle数据库