<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.返回特定的幾個欄位 select(欄位…)
2.排除某幾個欄位 select(entiyClass,predicate判斷)
3.分組聚合函數 select(“聚合函數”)
搭配service的.listMaps方法,將返回的資料封裝到map中避免了多餘欄位的返回
說明 :以下程式碼中 iProjectBuildService實現了mybatis-plus的service介面
範例一:指定需要查詢的具體欄位
public AjaxResult listAll(ProjectBuild projectBuild) { //只返回了id和name兩個欄位 List<Map<String,Object>> list = this.iProjectBuildService.listMaps( Wrappers.lambdaQuery(projectBuild).select(ProjectBuild::getBuildId,ProjectBuild::getBuildName) .orderByAsc(ProjectBuild::getBuildId) // 以上select表示要返回的欄位, ); return AjaxResult.success(list); }
範例二:排除不需要返回的欄位
@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); }
範例三:返回聚合函數值
sql實現:
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); }
問題描述: map中的key沒有使用駝峰命名
解決方法: 使用hutool工具包中的 MapUtil.toCamelCaseMap(map);
//處理map中key未駝峰命名 list = list.stream().map(MapUtil::toCamelCaseMap).collect(Collectors.toList());
以此做法為例,如果需要多條件匹配,可以自行新增方法處理
// 繼承原來的公共mapper // java8 interface可以寫方法的實現邏輯,直接在這裡寫好, // 其他地方呼叫時直接繼承自定義的 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"); // 獲取物件的主鍵值 wrapper.eq("id", id); } catch (NoSuchFieldException | IllegalAccessException e) { throw new RuntimeException("物件主鍵未找到,請確認"); // 自定義異常 } for (String dirtyField : dirtyFields) { try { Field classField = tClass.getDeclaredField(dirtyField); classField.setAccessible(true); // 物件屬性,轉成資料庫欄位 wrapper.set(StringUtils.toColumn(dirtyField), classField.get(entity)); } catch (Exception ignored) { } } return update(null, wrapper); } }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45