当前位置: 首页 > news >正文

网站生成app客户端网站开发工期安排表

网站生成app客户端,网站开发工期安排表,源码下载网站,安徽建设工程信息网查文章目录 一、简单查询二、 分页查询三、条件查询#xff1a;WrapperWrapper 查询所有Wrapper 查询的 3 种写法一个复杂一点的例子 四、逻辑条件的组合与与和或或与或混用 五、条件为 null 的处理技巧六、设置查询列七、使用 SQL 聚合函数八、模糊查询 一、简单查询 // 根据 … 文章目录 一、简单查询二、 分页查询三、条件查询WrapperWrapper 查询所有Wrapper 查询的 3 种写法一个复杂一点的例子 四、逻辑条件的组合与与和或或与或混用 五、条件为 null 的处理技巧六、设置查询列七、使用 SQL 聚合函数八、模糊查询 一、简单查询 // 根据 ID 查询。执行的 SQL 条件是 id ... T selectById(Serializable id);// 根据 ID 批量查询。执行的 SQL 条件是 id in (...) ListT selectBatchIds(Param(Constants.COLLECTION) Collection? extends Serializable idList);// 根据指定字段查询。执行 SQL 条件是 xxx... and yyy... and zzz... ListT selectByMap(Param(Constants.COLUMN_MAP) MapString, Object columnMap);二、 分页查询 分压查询的接口即方法参数中要求传入 IPage 对象的不能直接使用需要配置后才可用。如果你没有配置就直接使用你会发现执行的仍然是 select all 的效果。 配置 Bean // 确保 Spring IoC 容器中存在一个分页拦截器的 JavaBean 。 public MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor; }使用和验证 PageEmployee page new Page(1, 2); PageEmployee employeePage employeeDao.selectPage(page, null);log.info( 当前页码: {}, employeePage.getCurrent()); log.info(每页数据总量: {}, employeePage.getSize()); log.info( 总页数: {}, employeePage.getPages()); log.info( 总数据量: {}, employeePage.getTotal());log.info(当前页数据据如下); employeePage.getRecords().forEach(item - log.info({}, item));三、条件查询Wrapper 在 Dao/Mapper “点”出来的 select 方法中你会发现有大量的要求你传入 Wrapper 对象的查询方法这些方法就是用来实现复杂的条件查询功能的而 Wrapper 对象就是所谓的条件构造器。 Wrapper 查询所有 对于这些要求传入 Wrapper 对象的 select 方法如果你故意在 Wrapper 参数位置传入一个 null 那么就是『无条件查询所有』的功能。 Wrapper 查询的 3 种写法 # 写法一常规写法不推荐 QueryWrapperEmployeePo qw new QueryWrapper(); qw.lt(salary, 2000);ListEmployeePo pos employeeDao.selectList(qw);如果有多条件的话除了独立式赋值还可以用链式调用写法串在一起 // qw.lt(salary, 2000); // qw.gt(commission, 500); qw.lt(salary, 2000).gt(commission, 500);缺点查询条件中的列名是以字符串的形式给出的万一写错了debug 时找这种错十分费劲。 # 写法二lambda 写法 QueryWrapperEmployeePo qw new QueryWrapper(); qw.lambda().lt(EmployeePo::getSalary, 2000).gt(EmployeePo::getCommission, 500);ListEmployeePo pos employeeDao.selectList(qw);缺点这个写法每次都要手动调用一次 .lambda() 方法。 # 写法三另一种 lambda 写法推荐 LambdaQueryWrapperEmployeePo qw new LambdaQueryWrapper(); qw.lt(EmployeePo::getSalary, 2000).gt(EmployeePo::getCommission, 500); ListEmployeePo pos employeeDao.selectList(qw);一个复杂一点的例子 按用户名和状态查询后台用户并按创建时间降序排列为例。预期执行的 SQL 应该如下 SELECT * FROM employee WHERE department_id 2 AND salary BETWEEN 500 AND 3000 ORDER BY salary DESC;在 mybatis-plus 中创建 Wrapper 对象并调用对象的方法例如eq() 、between() 等方法来表达你所想的查询条件。这些条件之间是 AND 的关系 构造 Wrapper 对象来表达你心里所想的查询条件和排序规则。 LambdaQueryWrapperEmployeePo lqw new LambdaQueryWrapper(); lqw.eq(EmployeePo::getDepartmentId, 2L).between(EmployeePo::getSalary, 500, 3000).orderByDesc(EmployeePo::getSalary);ListEmployeePo pos employeeDao.selectList(lqw);四、逻辑条件的组合 逻辑条件的组合大体分为 2 种 单纯的 ...与...与... / ...或...或... 与或 混用由于 或 的优先级更高因此可以改造成 (... and ...) or (... and ...) or ... 这样的统一形式。 与与和或或 ...与...与... 情况 如上例所示QueryWrapper 的链式调用中所表达的逻辑关系就是 and 的关系。 ...或...或... 情况 这种关系中在 Wrapper 对象的链式调用中穿插调用 or() 方法即可。or() 方法前后的条件就是或的关系。 WrapperEmployee wp1 new QueryWrapperEmployee().lt(salary, 1000).or().isNotNull(commission);employeeDao.selectList(wp1).forEach(System.out::println);与或混用 与或 混用的情况下先要把你「心里」的 SQL 语句改造成通用形式(... and ...) or (... and ...) or ... 。 WrapperEmployee wrapper new QueryWrapperEmployee().eq(department_id, 2L).lt(salary, 1500).or().eq(department_id, 3L).gt(salary, 1300);employeeDao.selectList(wrapper).forEach(System.out::println);五、条件为 null 的处理技巧 我们经常会遇到这样的场景当查询条件值为非 null 时就使用它作为查询条件如果查询条件值为 null 时就忽略这个条件。例如当 department_id 有值时就查询指定部门的员工信息如果 department_id 值为 null 那就忽略 department_id 条件查询所有。 笨办法就是自己在拼接 Wrapper 查询条件时加个 if 判断 Long department_id ...;LambdaQueryWrapperEmployeePo lqw new LambdaQueryWrapper(); if (department_id ! null) {lqw.eq(EmployeePo::getDepartmentId, department_id); } lqw.between(EmployeePo::getSalary, 500, 3000); lqw.orderByDesc(EmployeePo::getSalary); ListEmployeePo pos employeeDao.selectList(lqw);对于这种情况Mybatis Plus 提供了一个简单一点的写法 Long department_id ...; LambdaQueryWrapperEmployeePo lqw new LambdaQueryWrapper(); //下面这句 lqw.eq(department_id ! null, EmployeePo::getDepartmentId, department_id); lqw.between(EmployeePo::getSalary, 500, 3000); lqw.orderByDesc(EmployeePo::getSalary); ListEmployeePo pos employeeDao.selectList(lqw);当判断条件即第一个参数成立时这个查询条件才存在。 六、设置查询列 之前的查询执行的都是 select * 查询所有列/字段有时我们需要指定查询特的那个字段。这种情况下就要调用 QueryWrapper 的 .select() 方法来指定带查询字段。 注意 对于没有指定的列/字段查询结果 PO 类的对象中相应的属性值就是 null 。 LambdaQueryWrapper 的 select 用法 LambdaQueryWrapperEmployeePo lqw new LambdaQueryWrapper(); lqw.select(EmployeePo::getId, EmployeePo::getName, EmployeePo::getSalary, EmployeePo::getCommission, EmployeePo::getDepartmentId); lqw.eq(EmployeePo::getDepartmentId, 2).between(EmployeePo::getSalary, 500, 3000).orderByDesc(EmployeePo::getSalary); ListEmployeePo pos employeeDao.selectList(lqw);QueryWrapper 的 select 用法 QueryWrapperEmployeePo lqw new QueryWrapper(); lqw.select(id, name, salary, commission, department_id); lqw.lambda().eq(EmployeePo::getDepartmentId, 2).between(EmployeePo::getSalary, 500, 3000).orderByDesc(EmployeePo::getSalary); ListEmployeePo pos employeeDao.selectList(lqw);还是因为字符串容易“写错”不好找 bug 的建议使用 lambda 写法。 七、使用 SQL 聚合函数 在 Mybatis Plus 中使用聚合函数类似于上面的指定特定列使用 QueryWrapper 在 select 方法中指定聚合函数。例如 QueryWrapperEmployeePo lqw new QueryWrapper(); lqw.select(count(*) as total); // 你还能起别名但是接下来的 2 点就和上面的指定特定列有所不动了 调用的是 mapper/dao 的 .selectMaps() 方法这个方法的返回值是一个 map 的 list 。 qw.select(count(*) as total); qw.lambda().between(EmployeePo::getSalary, 500, 3000); ListMapString, Object maps employeeDao.selectMaps(qw);maps.forEach(map - System.out.println(map.get(total)));为什么结果会是一个 map 的 list 原因在于在你所执行的 SQL 语句的聚合函数可能不止一个另外结合分组你所得到的聚合数据也不止一行。例如 qw.select(count(*) as total, avg(salary) as avgSalary, avg(commission) as avgCommission); qw.lambda().between(EmployeePo::getSalary, 500, 3000).groupBy(EmployeePo::getDepartmentId); ListMapString, Object maps employeeDao.selectMaps(qw);maps.forEach(map - System.out.printf(%s %s %s\n,map.get(total),map.get(avgSalary),map.get(avgCommission)) );八、模糊查询 Mybatis Plus 的 QueryWrapper 有一套专门的 like 方法用于模糊查询。如下 LambdaQueryWrapperEmployeePo qw new LambdaQueryWrapper(); qw.select(EmployeePo::getId, EmployeePo::getName, EmployeePo::getSalary); qw.like(EmployeePo::getName, A); // like %A% //qw.likeRight(EmployeePo::getName, A); // like %A% //qw.likeLeft(EmployeePo::getName, A); // like %A employeeDao.selectMaps(qw);关于条件构造器 Wrapper 的更多使用见官网
http://www.huolong8.cn/news/227310/

相关文章:

  • 企业网站制作建站公司品牌推广的渠道有哪些
  • 专门做任务的网站6佛山住房和城乡建设部网站
  • 宏润建设集团网站工程建设领域是什么意思
  • 没有备案的网站怎么访问不了h5页面怎么生成链接
  • 软件公司网站素材大连网站建设兼职
  • html5企业网站案例高端网站建设的品牌
  • 苏州网站制作及推广网站能需要怎么做才不会被攻击
  • 推荐常州微信网站建设做哈尔滨本地门户网站赚钱吗
  • 怎么做美食的网站重庆自动seo
  • 做同城服务网站比较成功的网站化妆品企业网站建设的策划方案
  • 爬取旅游网站数据并进行分析网站建设课本
  • 百度制作公司网页免费培训seo网站
  • wordpress编辑器视频教程铁岭网站seo
  • 建站之星网站模板商城亚马逊跨境电商是做什么的
  • 网站被收录后又被提出了腾讯企业邮箱域名可以做网站吗
  • 免费做手机网站建设wordpress摘要图片
  • 白山网站制作广州智能科技有限公司
  • 天津大学新校区建设网站社区网站的建设
  • 在线免费源码资源源码站网站维护服务费
  • wordpress手机站如何做南山网站 建设深圳信科
  • 长沙关键词优化方法网站seo哪家好
  • 个人网站设计与制作源代码qq推广功能在哪开
  • 2024房地产趋势分析深圳网站优化项目
  • 保定模板做网站网站建设平台哪家好
  • 微商做图王官方网站辽宁建设工程信息网怎么获取招标文件
  • 淘宝页面制作众志seo
  • 做外贸网站代理商产品网络营销分析
  • 免费网站建设塔山双喜网站建设及验收标准
  • 北京怎样做网站推广wordpress 固定链接 分类
  • 怎么在百度上免费做广告上海专业的seo推广咨询电话