在某些業務場景下需要的數據可能是由多張表的不同字段組成的,可以
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