确认IDEA配置

截止目前,利用IDEA创建SpringBoot项目的版本最低为2.5.11。但是为了项目演示并且学习Mybatis与SpringBoot的整合,我们仅仅需要SpringBoot为2.2.1.RELEASE的版本。因此,需要在pom.xml文件中修改配置。

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.2.1.RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

创建项目

添加Mybatis-plus的依赖和其他相关依赖
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
             <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1</version>
        </dependency>

特别注意:添加了Mybatis-plus依赖后,就不要添加Mybatis依赖。

如果您的lombok不起作用,请及时安装在IDEA中安装lombok插件。一般情况下,已经默认安装。(该插件帮助生成Setter和Getter方法)

配置数据库信息;编写application.properties文件 或者编写application.yaml文件
#mysql数据源配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/hospital # database替换为对应的数据库
    username: root                            # root替换为对应的用户
    password: 123456                        # password替换为对应的密码
    driver-class-name: com.mysql.cj.jdbc.Driver

相比application.properties文件,我更喜欢application.yaml文件。因为它更简洁明了。(可以了解一下配置文件的生效顺序,以及他们两者之间的区别)

编写代码

  • 编写实体类
package com.example.demomp.entity;


import lombok.Data;

@Data
public class User {

    private Long id;
    private String name;
    private Integer age;
    private String email;

}
  • 编写Mapper
public interface UserMapper extends BaseMapper<User> {
    //  使用继承BaseMapper<E> ,插入User实体类类型
}

BaseMapper 接口已经为我们封装好各种操作数据的方法。可以看一下它的源码


//BaseMapper的源码

public interface BaseMapper<T> extends Mapper<T> {
    int insert(T entity);

    int deleteById(Serializable id);

    int deleteByMap(@Param("cm") Map<String, Object> columnMap);

    int delete(@Param("ew") Wrapper<T> wrapper);

    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    int updateById(@Param("et") T entity);

    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

    T selectById(Serializable id);

    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);

    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);

    T selectOne(@Param("ew") Wrapper<T> queryWrapper);

    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);

    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);

    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);

    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);

    <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);

    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
}
  • 启动类

这里我们需要的在DemompApplication加入注解@MapperScan(“com.example.demomp.mapper”),以获取该包动态生成的对象。相比在每个接口类添加@Mapper注解,还不如在使用@MapperScan,直接获取该包下的所有的接口类的动态的生成的实现类。

package com.example.demomp;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.demomp.mapper")
//作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
public class DemompApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemompApplication.class, args);
    }

}