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

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

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

第一步:加入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)建兩張有關聯(lián)關系的表(我的如下  )

            sys_user:用戶表

          sys_role:權限表

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

@Data
@TableName("sys_user") //當實體類名(前提是開啟駝峰)與數(shù)據(jù)庫表名一致時可不寫
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;

********************不想建這個實體類就不建  沒有意義 

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(注意看這個@Select里面的SQL)

第六步:定義一個通用實體類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ù)庫 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();
  }
 }

 第七步:接下來就是測試了

測試結果如下:

 

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

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

相關文章

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

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

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

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

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

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

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

    Shiro安全框架的主要組件及認證過程簡介

    這篇文章主要介紹了Shiro安全框架的主要組件及認證過程簡介,Shiro?是一個強大靈活的開源安全框架,可以完全處理身份驗證、授權、加密和會話管理,本文就來介紹一下此框架的核心組成,需要的朋友可以參考下
    2023-08-08
  • SpringBoot中使用spring-retry 解決失敗重試調用

    SpringBoot中使用spring-retry 解決失敗重試調用

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

    lombok中@Data使用常見的小坑及解決

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

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

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

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

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

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

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

    java結合keytool如何實現(xiàn)非對稱加密與解密詳解

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

最新評論

搜索| 泾川县| 涞水县| 大港区| 沙坪坝区| 涞源县| 广安市| 徐闻县| 淅川县| 桓台县| 敖汉旗| 江孜县| 宣化县| 淄博市| 赫章县| 沾化县| 大同县| 贵阳市| 霍州市| 玉林市| 涟源市| 普安县| 白银市| 鹿邑县| 昌吉市| 南昌县| 南康市| 博爱县| 祥云县| 水富县| 南充市| 抚宁县| 手机| 灵璧县| 英山县| 尉氏县| 庆云县| 罗源县| 老河口市| 团风县| 铁岭县|