SpringBoot整合mybatis(plus)单表查询和多表查询

SpringBoot整合mybatis(plus)单表查询和多表查询

前言

mybatis是springboot常用的操作数据库的框架,能够大大简化数据库操作,其可以进行xml配置开发,也可以进行注解开发。虽然现在有mybatis-plus,功能很强大,但也只是简化了单表操作,多表操作甚是麻烦。小型项目怎么用都可以,但是对于大型项目来说还是推荐mybatisXML进行多表操作,用mybatis-plus进行单表操作的组合。注解开发感觉位于这两个中间,显得有点尴尬,推荐用于小型项目。

单表查询(用mybatis-plus自带)

使用mybatis-plus进行单表查询较为简单,只需继承自带的类即可,举例如下:

//Dao层
public interface UserDao extends BaseMapper<UserInfo> {
}
//service层
public interface UserService extends IService<UserInfo> {
}

其他详情可以看mybatis-plus官网

多表查询(XML配置)

重点在多表查询查询,下面是用单表查询的例子,要想多表查询只需更改sql语句即可。

导入包

这里我用的是mybatis-plus,其完全支持原生mybatis的配置开发,还能进行方便的单表操作。

将下面代码加入pom文件中,注意版本不一定非得一样。

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

修改配置文件

我这里是配置文件是:application.yml

因为是整合进springboot,这里不需要配置官网所说的mybatis-config.xml文件,只需配置下面的文件就可以。

#配置数据库
spring:
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test
        username: root
        password: root

#配置mybatis-plus插件
mybatis-plus:
    global-config:
        db-config:
            id-type: auto	#用于id自增
    configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl	#日志类型
    type-aliases-package: com.test.domain	#配置实体类位置,这样以后就不用写完整的路径名了
    mapper-locations: classpath:/mappers/*.xml	#较为重要,配置mapper的xml文件位置。

添加mapper的xml文件,放到resource下的mappers目录中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.dao.UserDao">
    <select id="selectAll" resultType="UserInfo">
        select * from user_info
    </select>
</mapper>

编写实体类

这里只是个例子:UserInfo.java

package com.test.domain;

import lombok.Data;

@Data
public class UserInfo {
    private Integer id;
    private String name;
    private String password;
}

编写数据层(Dao)

UserDao.java

package com.test.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.test.domain.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
// BaseMapper是继承自mybatis-plus里的类,里面包含很多单表操作
public interface UserDao extends BaseMapper<UserInfo> {
    List<UserInfo> selectAll();
}

编写服务层(service)

  1. 接口类:UserService.java
package com.test.service;

import com.test.domain.UserInfo;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface UserService {
    List<UserInfo> getAll();

}

  1. 实现类:UserServiceImpl.java
package com.test.service.impl;

import com.test.dao.UserDao;
import com.test.domain.UserInfo;
import com.test.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;

    @Override
    public List<UserInfo> getAll() {
		return userDao.selectAll();
    }
}

编写控制层(Controller)

UserController.java

package com.test.controller;

import com.test.domain.UserInfo;
import com.test.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;
    @GetMapping("getall")
    public List<UserInfo> getAll(){
        return userService.getAll();
    }
}

posted @   绿树荫下跑猫猫  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示