mysql如果使用视图?在mybatis中如何使用?

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);
    }
}

在这里插入图片描述

想看更多精彩内容,可以关注我的博客园
我的博客园

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
## Mybatis Generator配置详解 一、简介 mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件。 二、配置方法 在项目的pom文件添加插件配置 ```java <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> ``` 在main的resource目录下创建generatorConfig.xml文件 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200323172307167.png) 配置文件的内容如下,可根据需要自行修改 ```java <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--> <classPathEntry location="D:\Users\ZLZ\.m2\repository\mysql\mysql-connector-java\8.0.15\mysql-connector-java-8.0.15.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库链接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.01:3306/shop? useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC" userId="root" password="root"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.example.shop.shop.domain" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.shop.shop.dao" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是数据库的表名或视图名 domainObjectName是实体类名--> <table tableName="ad" domainObjectName="Ad" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/> </context> </generatorConfiguration>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值