一、Mybatis-plus介绍
他只增强了单表查询,没增强多表查询等复杂的查询。
二、配置
引入依赖
<!-- MyBatisPlus依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!-- mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 数据链接池 druid-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
配置数据库相关信息
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot #数据库名
spring.datasource.username=root #账号
spring.datasource.password=****** #密码
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
添加@MapperScan注解
创建UserMapper接口,这也是项目的持久层,与数据查询相关的,之后我们需要让sprongboot知道,mapper文件夹就是数据持久层接口,所以,在项目入口文件中还要使用@MapperScan注解定义持久层。
三、程序架构
下面以一个用户信息查询需求为例,数据库字段如图所示:
3.1 实体类
先定义一个user类,包含变量id,username,password,birthday
package com.example.springboot1_2.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.List;
@TableName("t_user") //其对应数据库的表名
public class User {
@TableId(type = IdType.AUTO)
private int id;
private String username;
private String password;
private String birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", birthday='" + birthday + '\'' +
'}';
}
}
3.2 定义dao/Mapper层
里面定义了数据库查询的语句,下面定义了一个接口,正常情况下需要写他的实现函数,但是Mybatis-plus针对单表查询进行了增强,直接加注解即可,不需要我们实现。
package com.example.springboot1_2.mapper;
import com.example.springboot1_2.entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
// 查询所有用户
@Select("select * from user")
public List<User> findAllUser();
// 插入数据
@Insert("insert into user values (#{id},#{username},#{password},#{birthday})")
public int insert(User user);
// 删除用户
@Delete("delete from user where id=#{id}")
int delete(int id);
// 更新用户
@Update("update user set username=#{username},password=#{password},birthday=#{birthday} where id=#{id}")
int update(User user);
}
3.3 定义Services层次
这一层是系统的核心功能,包含系统最核心的数据处理编排。下面只是个简单的查询功能,直接调用UserMapper层的查询函数即可。
package com.example.springboot1_2.services;
import com.example.springboot1_2.entity.User;
import com.example.springboot1_2.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> UserService(){
return userMapper.findAllUser();
}
}
3.4 controller
定义对外交互层controller,提供一个url调用查询用户的服务。
package com.example.springboot1_2.controller;
import com.example.springboot1_2.entity.User;
import com.example.springboot1_2.mapper.UserMapper;
import com.example.springboot1_2.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
private UserService Service;
@GetMapping("/user")
public List query() {
List<User> userList = Service.UserService();
if (userList != null)
return userList;
}
}
四、其他方法
数据存取结构类似,但是他将sql存到了专门的xml文件中,据说是一种比较老的方法。但是感觉逻辑很清晰。
(1条消息) SpringBoot-数据库的查询_thzan的博客-CSDN博客_springboot查询数据库
并未使用mybatis,而是使用的Spring Data JPA包,但是数据存取结构依旧类似,看了一些数据持久层框架,例如(JPA、Hibernate和Mybatis),系统的数据结构是一样的,都是controller->Services->Dao/Mapper->实体类->数据库。只是Dao/Mapper层与数据库交互的步骤有一些区别,不影响上层的contorller层和Services。
基于spring boot后端读取数据库数据_eat_Cookie的博客-CSDN博客_springboot读取数据库中的值