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)
- 接口类: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();
}
- 实现类: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();
}
}
标签:多表,SpringBoot,查询,test,plus,单表,mybatis,import,com
From: https://www.cnblogs.com/ydteng/p/17554880.html