Springboot-数据库操作(Mybatis)-初级入门

一、Mybatis-plus介绍

官方文档:简介 | MyBatis-Plus (baomidou.com)

Springboot-数据库操作(Mybatis)-初级入门_第1张图片 他只增强了单表查询,没增强多表查询等复杂的查询。

二、配置

引入依赖

      
        
            com.baomidou
            mybatis-plus-boot-starter
            3.4.2
        

        
        
            mysql
            mysql-connector-java
            5.1.47
        

        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.20
        

配置数据库相关信息

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注解定义持久层。

Springboot-数据库操作(Mybatis)-初级入门_第2张图片

三、程序架构

Springboot-数据库操作(Mybatis)-初级入门_第3张图片

下面以一个用户信息查询需求为例,数据库字段如图所示:

Springboot-数据库操作(Mybatis)-初级入门_第4张图片

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 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 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 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读取数据库中的值 

你可能感兴趣的:(Springboot,mybatis,数据库,spring,boot)