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

如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件

 更新時(shí)間:2022年02月18日 16:19:16   作者:梁云亮  
這篇文章主要介紹了如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件,分享在MyBatisPlus中經(jīng)常會(huì)用到代碼來(lái)構(gòu)造查詢條件等內(nèi)容,需要的小伙伴可以參考一下

1.問(wèn)題

在MyBatisPlus中經(jīng)常會(huì)用到如下所示的代碼來(lái)構(gòu)造查詢條件:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();

if (userQuery.getId() != null) {
? ? queryWrapper.eq("id", userQuery.getId());
}
if (userQuery.getName() != null) {
? ? queryWrapper.like("name", userQuery.getName());
}
if (userQuery.getNickname() != null) {
? ? queryWrapper.like("nickname", userQuery.getNickname());
}
if (userQuery.getAccount() != null) {
? ? queryWrapper.eq("account", userQuery.getAccount());
}
if (userQuery.getGender() != null) {
? ? queryWrapper.eq("gender", userQuery.getGender());
}
if (userQuery.getBirth1() != null) {
? ? queryWrapper.ge("birth", userQuery.getBirth1());
}
if (userQuery.getBirth2() != null) {
? ? queryWrapper.le("birth", userQuery.getBirth2());
}
if (userQuery.getTel() != null) {
? ? queryWrapper.eq("tel", userQuery.getTel());
}
if (userQuery.getEmail() != null) {
? ? queryWrapper.eq("email", userQuery.getEmail());
}
if (userQuery.getQq() != null) {
? ? queryWrapper.eq("qq", userQuery.getQq());
}
if (userQuery.getWechat() != null) {
? ? queryWrapper.eq("wechat", userQuery.getWechat());
}
if (userQuery.getHomePage() != null) {
? ? queryWrapper.eq("home_page", userQuery.getHomePage());
}
//.........
baseMapper.selectPage(page, queryWrapper);

大量這樣的代碼,可以通過(guò)如下所示的反射技術(shù)生成,從而一勞永安逸,

2.優(yōu)化方案

public class APP{

? ? public static void main(String[] args) throws Exception {
? ? ? ? QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
? ? ? ? Dept dept = Dept.builder()
? ? ? ? ? ? ? ? .deptno(1234)
// ? ? ? ? ? ? ? ?.dname("sales")
? ? ? ? ? ? ? ? .loc("NEWYORK")
? ? ? ? ? ? ? ? .build();

? ? ? ? Method[] methods = Dept.class.getDeclaredMethods();
? ? ? ? for (Method method : methods) {
? ? ? ? ? ? String methodName = method.getName();
? ? ? ? ? ? if (methodName.contains("get")) {
? ? ? ? ? ? ? ? Object res = method.invoke(dept, null);
? ? ? ? ? ? ? ? if(res != null){
? ? ? ? ? ? ? ? ? ? String columnName = getColumnName(methodName);
? ? ? ? ? ? ? ? ? ? queryWrapper.eq(columnName,res);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? System.out.println(queryWrapper);//在此處設(shè)置斷點(diǎn),可以查看保存到QueryWrapper中的值
? ? }

? ? // 根據(jù)getter方法名得到對(duì)應(yīng)表的字段名
? ? public static String getColumnName(String name) {
? ? ? ? StringBuffer sb = new StringBuffer();
? ? ? ? name = name.substring(3, name.length()); //去掉get前綴
? ? ? ? char[] chars = name.toCharArray();
? ? ? ? for (int i = 0; i < chars.length; i++) {
? ? ? ? ? ? char item = chars[i];
? ? ? ? ? ? if (item > 65 && item < 90) {//大寫字母
? ? ? ? ? ? ? ? sb.append("_");
? ? ? ? ? ? ? ? sb.append((char)(item+32));
? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? sb.append(item);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return sb.deleteCharAt(0).toString();
? ? }
}

到此這篇關(guān)于如何利用反射生成 MyBatisPlus中QueryWrapper動(dòng)態(tài)條件的文章就介紹到這了,更多相關(guān)反射生成 MyBatisPlus中QueryWrapper動(dòng)態(tài)條件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA SE包裝類和泛型詳細(xì)介紹及說(shuō)明方法

    JAVA SE包裝類和泛型詳細(xì)介紹及說(shuō)明方法

    這篇文章主要介紹了JAVA SE包裝類和泛型的相關(guān)資料,包括基本數(shù)據(jù)類型與包裝類的對(duì)應(yīng)關(guān)系,以及裝箱和拆箱的概念,并重點(diǎn)講解了自動(dòng)裝箱和自動(dòng)拆箱的機(jī)制,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式

    java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式

    這篇文章主要介紹了java中l(wèi)ong(Long)與int(Integer)之間的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • 解決@ServerEndpoint不能注入@Autowired的問(wèn)題

    解決@ServerEndpoint不能注入@Autowired的問(wèn)題

    這篇文章主要介紹了解決@ServerEndpoint不能注入@Autowired的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java架構(gòu)師的5大基本能力你知道嗎

    Java架構(gòu)師的5大基本能力你知道嗎

    這篇文章主要為大家介紹了Java架構(gòu)師的基本能力,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2022-01-01
  • SpringBoot整合token實(shí)現(xiàn)登錄認(rèn)證的示例代碼

    SpringBoot整合token實(shí)現(xiàn)登錄認(rèn)證的示例代碼

    本文主要介紹了SpringBoot整合token實(shí)現(xiàn)登錄認(rèn)證的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringBoot Mybatis批量插入Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)

    SpringBoot Mybatis批量插入Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)

    這篇文章主要介紹了SpringBoot Mybatis批量插入Oracle數(shù)據(jù)庫(kù)數(shù)據(jù),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • SpringBoot讀取yml文件中配置數(shù)組的2種方法

    SpringBoot讀取yml文件中配置數(shù)組的2種方法

    這篇文章主要介紹了SpringBoot讀取yml文件中配置數(shù)組的2種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 在SpringBoot中使用ResponseBodyAdvice自定義響應(yīng)的代碼實(shí)現(xiàn)

    在SpringBoot中使用ResponseBodyAdvice自定義響應(yīng)的代碼實(shí)現(xiàn)

    ResponseBodyAdvice是Spring Framework中的一個(gè)接口,允許您在將響應(yīng)寫入客戶端之前自定義響應(yīng),它通常與@ControllerAdvice注釋結(jié)合使用,以跨多個(gè)控制器將全局更改應(yīng)用于響應(yīng)主體,本文介紹了如何使用ResponseBodyAdvice的基本概述,需要的朋友可以參考下
    2024-12-12
  • Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例

    Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例

    本篇文章主要介紹了Java實(shí)現(xiàn)文件或文件夾的復(fù)制到指定目錄實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • java之Object類用法實(shí)例

    java之Object類用法實(shí)例

    這篇文章主要介紹了java之Object類用法實(shí)例,是Java程序設(shè)計(jì)中比較重要的概念,以實(shí)例的形式對(duì)其定義及用法做了較為深入的講解,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

东乌| 凯里市| 湖南省| 百色市| 玛多县| 苍梧县| 介休市| 灵寿县| 万安县| 北碚区| 旬邑县| 安阳县| 台北市| 丰镇市| 汪清县| 涿鹿县| 开原市| 金塔县| 丹阳市| 正镶白旗| 黄冈市| 罗平县| 万源市| 阿克陶县| 新安县| 沛县| 长阳| 西宁市| 永泰县| 仪征市| 孝昌县| 汶上县| 奉化市| 玉门市| 太仆寺旗| 昌乐县| 红河县| 新闻| 永修县| 朝阳市| 汨罗市|