Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式
條件構(gòu)造器select方法返回指定字段
條件構(gòu)造器select用法
1.返回特定的幾個(gè)字段 select(字段…)
2.排除某幾個(gè)字段 select(entiyClass,predicate判斷)
3.分組聚合函數(shù) select(“聚合函數(shù)”)
搭配service的.listMaps方法,將返回的數(shù)據(jù)封裝到map中避免了多余字段的返回
實(shí)例
說(shuō)明 :以下代碼中 iProjectBuildService實(shí)現(xiàn)了mybatis-plus的service接口
實(shí)例一:指定需要查詢(xún)的具體字段
public AjaxResult listAll(ProjectBuild projectBuild) { ? ? //只返回了id和name兩個(gè)字段 ? ? ? ? List<Map<String,Object>> list = this.iProjectBuildService.listMaps( ? ? ? ? ? ?Wrappers.lambdaQuery(projectBuild).select(ProjectBuild::getBuildId,ProjectBuild::getBuildName) ? ? ? ? ? ?.orderByAsc(ProjectBuild::getBuildId) ? ? ? ? ? ?// 以上select表示要返回的字段, ? ? ); ? ? return AjaxResult.success(list); }
實(shí)例二:排除不需要返回的字段
@Test public void selectByQueryWrapper8(){ ? ? QueryWrapper<Employee> queryWrapper=new QueryWrapper(); ? ? ? queryWrapper.lambda() ? ? ? ? ? ? ?.select(Employee.class,fieldInfo->!fieldInfo.getColumn().equals("birthday")&&!fieldInfo.getColumn().equals("gender")) ? ? ? ? ? ? ?.gt(Employee::getSalary,3500) ? ? ? ? ? ? ?.like(Employee::getName,"小"); ? ? List<Employee> employeeList = employeeMapper.selectList(queryWrapper); ? ? System.out.println(employeeList); }
實(shí)例三:返回聚合函數(shù)值
sql實(shí)現(xiàn):
SELECT departmentId,AVG(salary) AS avg_salary FROM t_employee GROUP BY department_id;
@Test public void selectByQueryWrapper9(){ ? ? QueryWrapper<Employee> queryWrapper=new QueryWrapper(); ?? ? ? queryWrapper.select("department_id","AVG(salary) AS avg_salary") ? ? ? ? ? ? ?.groupBy("department_id"); ? ? List<Employee> employeeList = employeeMapper.selectList(queryWrapper); }
問(wèn)題解決
問(wèn)題描述: map中的key沒(méi)有使用駝峰命名
解決方法: 使用hutool工具包中的 MapUtil.toCamelCaseMap(map);
//處理map中key未駝峰命名 list = list.stream().map(MapUtil::toCamelCaseMap).collect(Collectors.toList());
Mybatis-Plus修改指定字段
通用解決方案
以此做法為例,如果需要多條件匹配,可以自行添加方法處理
// 繼承原來(lái)的公共mapper // java8 interface可以寫(xiě)方法的實(shí)現(xiàn)邏輯,直接在這里寫(xiě)好, // 其他地方調(diào)用時(shí)直接繼承自定義的 mapper public interface CustomBaseMapper<T> extends BaseMapper<T> { /** * 目前僅支持主鍵/屬性為 id的更新 * @param dirtyFields: 指定更新的屬性 */ default int updateById(@Param("et") T entity, List<String> dirtyFields) { Class<?> tClass = entity.getClass(); UpdateWrapper<T> wrapper = new UpdateWrapper<>(); try { Object id = ObjectUtils.getAttrVal(entity, "id"); // 獲取對(duì)象的主鍵值 wrapper.eq("id", id); } catch (NoSuchFieldException | IllegalAccessException e) { throw new RuntimeException("對(duì)象主鍵未找到,請(qǐng)確認(rèn)"); // 自定義異常 } for (String dirtyField : dirtyFields) { try { Field classField = tClass.getDeclaredField(dirtyField); classField.setAccessible(true); // 對(duì)象屬性,轉(zhuǎn)成數(shù)據(jù)庫(kù)字段 wrapper.set(StringUtils.toColumn(dirtyField), classField.get(entity)); } catch (Exception ignored) { } } return update(null, wrapper); } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring的jdbctemplate的crud的基類(lèi)dao
本文主要介紹了使用spring的jdbctemplate進(jìn)行增刪改查的基類(lèi)Dao的簡(jiǎn)單寫(xiě)法,需要的朋友可以參考下2014-02-02Mybatis-Plus進(jìn)階分頁(yè)與樂(lè)觀鎖插件及通用枚舉和多數(shù)據(jù)源詳解
這篇文章主要介紹了Mybatis-Plus的分頁(yè)插件與樂(lè)觀鎖插件還有通用枚舉和多數(shù)據(jù)源的相關(guān)介紹,文中代碼附有詳細(xì)的注釋?zhuān)信d趣的朋友來(lái)看看吧2022-03-03一問(wèn)詳解SpringBoot配置文件優(yōu)先級(jí)
在SpringBoot項(xiàng)目當(dāng)中,我們要想配置一個(gè)屬性,可以通過(guò)這三種方式當(dāng)中的任意一種來(lái)配置都可以,那么優(yōu)先級(jí)怎么算,本文主要介紹了一問(wèn)詳解SpringBoot配置文件優(yōu)先級(jí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04微信支付java版V3驗(yàn)證數(shù)據(jù)合法性(Deom)
這篇文章主要介紹了微信支付java版V3驗(yàn)證數(shù)據(jù)合法性(Deom)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09OpenCV Java實(shí)現(xiàn)人臉識(shí)別和裁剪功能
這篇文章主要為大家詳細(xì)介紹了OpenCV Java實(shí)現(xiàn)人臉識(shí)別和裁剪功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05解決mybatis用Map返回的字段全變大寫(xiě)的問(wèn)題
這篇文章主要介紹了解決mybatis用Map返回的字段全變大寫(xiě)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12