最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot + mybatis-plus實(shí)現(xiàn)多表聯(lián)合查詢功能(注解方式)

 更新時(shí)間:2020年09月27日 09:30:00   作者:tod你好  
這篇文章主要介紹了springboot + mybatis-plus實(shí)現(xiàn)多表聯(lián)合查詢功能,是最簡(jiǎn)單的一種注解方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

第一步:加入mybatis-plus依賴

第二步:配置數(shù)據(jù)源

spring:
 thymeleaf:
 cache: false
 encoding: utf-8
 prefix: classpath:/templates/
 suffix: .html
 enabled: true
 datasource:
 url: jdbc:mysql://192.168.1.152:3306/timo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8
 driver-class-name: com.mysql.cj.jdbc.Driver
 username: root
 password: root
 type: com.alibaba.druid.pool.DruidDataSource
mybatis-plus:
 configuration:
   map-underscore-to-camel-case: true
   log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

第三步:創(chuàng)建兩張有關(guān)聯(lián)關(guān)系的表(我的如下  )

            sys_user:用戶表

          sys_role:權(quán)限表

 第四步:將兩張表映射到實(shí)體類bean(其實(shí)sys_role建不建都無(wú)所謂,可以不建sys_role的實(shí)體類)

@Data
@TableName("sys_user") //當(dāng)實(shí)體類名(前提是開(kāi)啟駝峰)與數(shù)據(jù)庫(kù)表名一致時(shí)可不寫(xiě)
public class SysUser extends Model {
 
 @TableId(type = IdType.AUTO)
 private Long id;
 private String username;
 private String password;
 private String salt;
 private Integer deptId;
 private String picture;
 private String sex;
 private String email;
 private String phone;
 
 @Version
 private Integer version;
 
 @TableField(fill = FieldFill.INSERT)
 private Date createDate;
 
 @TableField(fill = FieldFill.INSERT_UPDATE)
 private Date updateDate;
 
 
 private Integer status;

********************不想建這個(gè)實(shí)體類就不建  沒(méi)有意義 

public class SysRole {
 
 private long id;
 private String roleName;
 
 
 public long getId() {
 return id;
 }
 
 public void setId(long id) {
 this.id = id;
 }
 
 
 public String getRoleName() {
 return roleName;
 }
 
 public void setRoleName(String roleName) {
 this.roleName = roleName;
 }
 
}

第五步:定義mapper(注意看這個(gè)@Select里面的SQL)

第六步:定義一個(gè)通用實(shí)體類Record

import com.alibaba.druid.proxy.jdbc.ClobProxyImpl;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.Reader;
import java.util.*;
 
/**
 * @author Wxiaokun
 * @version 1.0
 * @date 2020/9/25 0025 下午 4:15
 */
public class Record extends HashMap implements Map {
 
  private static final long serialVersionUID = 1L;
 
  Map map = null;
  HttpServletRequest request;
public Record(HttpServletRequest request){
   this.request = request;
   Map properties = request.getParameterMap();
   Map returnMap = new HashMap();
   Iterator entries = properties.entrySet().iterator();
   Map.Entry entry;
   String name = "";
   String value = "";
   while (entries.hasNext()) {
    entry = (Map.Entry) entries.next();
    name = (String) entry.getKey();
    Object valueObj = entry.getValue();
    if(null == valueObj){
     value = "";
    }else if(valueObj instanceof String[]){
     String[] values = (String[])valueObj;
     for(int i=0;i<values.length;i++){
      value = values[i] + ",";
     }
     value = value.substring(0, value.length()-1);
    }else{
     value = valueObj.toString();
    }
    returnMap.put(name, value);
   }
   map = returnMap;
  }
 
public Record() {
   map = new HashMap();
  }
 
@Override
public Object get(Object key) {
   Object obj = null;
   if(map.get(key) instanceof Object[]) {
    Object[] arr = (Object[])map.get(key);
    obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]);
   } else {
    obj = map.get(key);
   }
   return obj;
  }
 
public String getString(Object key) {
   return (String)get(key);
  }
 
@SuppressWarnings("unchecked")
@Override
public Object put(Object key, Object value) {
   if(value instanceof ClobProxyImpl){    // 這里必須要到如durid數(shù)據(jù)源的依賴 讀取數(shù)據(jù)庫(kù) Clob類型數(shù)據(jù)
    try {
     ClobProxyImpl cpi = (ClobProxyImpl)value;
     Reader is = cpi.getCharacterStream();  //獲取流
     BufferedReader br = new BufferedReader(is);
     String str = br.readLine();
     StringBuffer sb = new StringBuffer();
     while(str != null){      //循環(huán)讀取數(shù)據(jù)拼接到字符串
      sb.append(str);
      sb.append("\n");
      str = br.readLine();
     }
     value = sb.toString();
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
   return map.put(key, value);
  }
 
  @Override
  public Object remove(Object key) {
   return map.remove(key);
  }
 
  @Override
  public void clear() {
   map.clear();
  }
 
  @Override
  public boolean containsKey(Object key) {
   return map.containsKey(key);
  }
 
  @Override
  public boolean containsValue(Object value){
   return map.containsValue(value);
  }
 
  public Set entrySet() {
   return map.entrySet();
  }
 
  @Override
  public boolean isEmpty() {
   return map.isEmpty();
  }
 
  public Set keySet() {
   return map.keySet();
  }
 
  @SuppressWarnings("unchecked")
  @Override
  public void putAll(Map t) {
   map.putAll(t);
  }
 
  @Override
  public int size() {
   return map.size();
  }
 
  public Collection values() {
   return map.values();
  }
 }

 第七步:接下來(lái)就是測(cè)試了

測(cè)試結(jié)果如下:

 

至此  到這里 我覺(jué)得這個(gè)東西就有點(diǎn)像Jfinal底層封裝的Record類了,在多表聯(lián)合查詢的情況下,我們可以方便的使用mybatis-plus來(lái)進(jìn)行了。

到此這篇關(guān)于springboot + mybatis-plus實(shí)現(xiàn)多表聯(lián)合查詢功能(注解方式)的文章就介紹到這了,更多相關(guān)Mybatis-plus 多表聯(lián)合查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis中insert操作返回主鍵的實(shí)現(xiàn)方法

    MyBatis中insert操作返回主鍵的實(shí)現(xiàn)方法

    在使用MyBatis做持久層時(shí),insert語(yǔ)句默認(rèn)是不返回記錄的主鍵值,而是返回插入的記錄條數(shù)。這篇文章主要介紹了MyBatis中insert操作返回主鍵的方法,需要的朋友可以參考下
    2016-09-09
  • Java非侵入式API接口文檔工具apigcc用法詳解

    Java非侵入式API接口文檔工具apigcc用法詳解

    這篇文章主要介紹了Java非侵入式API接口文檔工具apigcc用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署

    IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署

    這篇文章主要介紹了IDEA2021.2配置docker如何將springboot項(xiàng)目打成鏡像一鍵發(fā)布部署,本文圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Shiro安全框架的主要組件及認(rèn)證過(guò)程簡(jiǎn)介

    Shiro安全框架的主要組件及認(rèn)證過(guò)程簡(jiǎn)介

    這篇文章主要介紹了Shiro安全框架的主要組件及認(rèn)證過(guò)程簡(jiǎn)介,Shiro?是一個(gè)強(qiáng)大靈活的開(kāi)源安全框架,可以完全處理身份驗(yàn)證、授權(quán)、加密和會(huì)話管理,本文就來(lái)介紹一下此框架的核心組成,需要的朋友可以參考下
    2023-08-08
  • SpringBoot中使用spring-retry 解決失敗重試調(diào)用

    SpringBoot中使用spring-retry 解決失敗重試調(diào)用

    本文主要介紹了SpringBoot中使用spring-retry 解決失敗重試調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • lombok中@Data使用常見(jiàn)的小坑及解決

    lombok中@Data使用常見(jiàn)的小坑及解決

    在Java中使用Lombok庫(kù)的@Data注解時(shí),布爾類型屬性可能導(dǎo)致生成的get方法不符合預(yù)期,對(duì)于非is開(kāi)頭的布爾屬性,Lombok生成的方法會(huì)添加is前綴,導(dǎo)致原本期待的get方法不存在,例如,對(duì)于屬性private boolean active,Lombok會(huì)生成方法名為isActive而不是getActive
    2024-10-10
  • java實(shí)現(xiàn)簡(jiǎn)單的小超市程序

    java實(shí)現(xiàn)簡(jiǎn)單的小超市程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單的小超市程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • JAVA中ArrayList和數(shù)組的轉(zhuǎn)換與遇到的問(wèn)題解決

    JAVA中ArrayList和數(shù)組的轉(zhuǎn)換與遇到的問(wèn)題解決

    做研發(fā)的朋友都知道,在項(xiàng)目開(kāi)發(fā)中經(jīng)常會(huì)碰到ArrayList與數(shù)組類型之間的相互轉(zhuǎn)換,這篇文章主要給大家介紹了關(guān)于JAVA中ArrayList和數(shù)組的轉(zhuǎn)換與遇到的問(wèn)題解決,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java視頻斷點(diǎn)上傳的實(shí)現(xiàn)示例

    Java視頻斷點(diǎn)上傳的實(shí)現(xiàn)示例

    斷點(diǎn)續(xù)傳指的是在下載或上傳時(shí),將下載或上傳任務(wù)人為的劃分為幾個(gè)部分,本文主要介紹了Java視頻斷點(diǎn)上傳的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱加密與解密詳解

    java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱加密與解密詳解

    這篇文章主要給大家介紹了關(guān)于java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱加密與解密的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08

最新評(píng)論

郯城县| 竹山县| 怀宁县| 昔阳县| 塔河县| 鹤庆县| 开鲁县| 泸西县| 大同市| 平度市| 新化县| 连州市| 尼勒克县| 婺源县| 舞阳县| 柞水县| 龙胜| 清河县| 临安市| 汤原县| 公安县| 郓城县| 招远市| 龙海市| 金华市| 廉江市| 甘谷县| 阳谷县| 恩施市| 铁岭市| 东丽区| 江达县| 长垣县| 清徐县| 剑河县| 甘南县| 中西区| 和政县| 射阳县| 宜黄县| 乌苏市|