跳转到主要内容

springboot 集成mybatis-plus

创建项目

create-springboot-project: https://qq829.cn/book/books/bbcbf/page/create-springboot-project

集成数据库

注意:如果你是按create-springboot-project创建的项目,需要删除配置



# application.yml
spring:
  autoconfigure:
    # 阻止Spring Boot自动配置数据源
    exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

约定与名词解释

  • entity(实体),与数据表,代表一张真实的数据表
  • DAO(数据访问对象),访问数据库的接口或实例,在spring-boot中,有时候有喜欢取名为Mapper
  • DTO(数据传输对象),含业务领域的数据(既包含entity,但是应该多余entity),但不包含业务逻辑

增加pom依赖


    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-bom</artifactId>
                <version>3.5.10</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

        <!--mysql支持-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        <!--mybatis支持-->
        <!--如果使用 mybatis plus 请将 mybatis 支持 去掉, mybatis plus 会自动处理依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.10</version>
        </dependency>


增加数据库连接配置


spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:33306/dataway?charset=utf8mb4&serverTimezone=Asia/Shanghai
    username: <root>
    password: <password>
    driver-class-name: com.mysql.cj.jdbc.Driver


创建数据库


创建Entity(实体)与数据库结构保持一致

注意 @Data@TableName("user") 注解


@Data
@TableName("user")
public class UserEntity {
    private Integer id;
    private String name;
    private Integer age;
    private String email;
}


创建DTO

这个可以后创建或者先直接继承于Entity,注意 @Data 注解


@Data
public class UserDTO extends UserEntity {

}

创建DAO


@Mapper
public interface UserDao extends BaseMapper<UserDTO> {
}


创建Service


public interface UserService {

    List<UserDTO> selectList();

    List<UserDTO> selectList2();
}


@Service
public class UserServiceImpl implements UserService {

    private final UserMapper userMapper;
    private final UserDao userDao;

    public UserServiceImpl(UserMapper userMapper, UserDao userDao) {
        this.userMapper = userMapper;
        this.userDao = userDao;
    }

    @Override
    public List<UserDTO> selectList() {
        List list = userDao.selectList(null);
        return list;
    }

    @Override
    public List<UserDTO> selectList2() {
        return userMapper.selectList();
    }

}



创建Controller



// 全局访问路径
@RequestMapping("/")
// 标记为本类为Controller类
@RestController
@Slf4j
public class HomeController {

    private UserService userService;

    public HomeController(UserService userService) {
        this.userService = userService;
    }

    @RequestMapping("/")
    public Object hello() {
        List list = userService.selectList();
        List list2 = userService.selectList2();
        return Map.of("list", list, "list2", list2);
    }
}


修改Application

注意 @MapperScan("com.iovhm.dataway.**.dao")


@SpringBootApplication
@MapperScan("com.iovhm.dataway.**.dao")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}