mysql如果使用視圖?在mybatis中如何使用?


在某些業務場景下需要的數據可能是由多張表的不同字段組成的,可以

1.創建視圖

2.多次查不同表封裝返回給前端

視圖的語法:

 
         
##創建視圖

CREATE VIEW 視圖名 as 要多表聯查的sql語句
##移除視圖

DROP VIEW 視圖名

 

如下:

##創建視圖
CREATE
VIEW view_test AS SELECT u.*,r.role_name,r.role_id FROM USER u,role r,user_role ur WHERE u.user_id = ur.user_id AND r.role_id = ur.role_id
##查詢視圖
SELECT * FROM view_test WHERE role_id =2

當然也可以更新操作表,不推薦,一般試圖用就是用來方便查詢的,進行更新操作會操作到原表的數據

##更新操作表
update 視圖名 set 字段名 = 字段值

 

結果如下:

 在mybatis如何使用,我用mybatisplus都是些SQL沒影響

package com.yblue.mapper;

import com.yblue.domain.Role;
import com.yblue.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author: JiaXinMa
 * @description: Role Dao層
 * @date: 2021/3/26
 */
public interface RoleMapper extends BaseMapper<Role> {

   @Select("SELECT * FROM view_test where role_id=#{roleId}")
    List<User> getViewTest(@Param("roleId") Integer roleId);
}
package com.yblue.domain;


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 lombok.Data;

/**
 * @author: JiaXinMa
 * @description: 用戶實體類
 * @date: 2021/3/26
 */
@Data
@TableName("user")
public class User extends Role{

    @TableId(type = IdType.AUTO)//自增主鍵
    @TableField("user_id")
    private Integer userId;//用戶Id

    @TableField("user_code")
    private String userCode;//用戶編號

    private String name;//用戶姓名

    private String username;//用戶賬號

    private String password;//用戶密碼

    @TableField("organization_id")
    private Integer organizationId;//部門Id

    private Integer status;//狀態:0停用/1啟用

    private String telephone;//手機號碼

    private String remark;//備注
}
package com.yblue.test;

import com.yblue.domain.User;
import com.yblue.mapper.RoleMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * @author JiaXinMa
 * @description 測試視圖
 * @date 2021/5/14
 */
@SpringBootTest
public class TestSQLView {

    @Autowired
    RoleMapper roleMapper;

    @Test
    public void getViewTest() {
        List<User> users = roleMapper.getViewTest(2);
        System.out.println("輸出:"+users);
    }
}

 

 

想看更多精彩內容,可以關注我的CSDN

我的CSDN


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM