mysql如果使用视图?
在某些业务场景下需要的数据可能是由多张表的不同字段组成的,可以
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);
}
}
想看更多精彩内容,可以关注我的博客园
我的博客园