个人常用语句笔记-Java

基础

判断不为空

import org.apache.commons.lang3.StringUtils;

StringUtils.isNotBlank(searchText)

try-with-resources

JDK1.7的新语法,这种try语句可以自动执行资源关闭过程,无需再在finally中显式关闭流。

只有所有实现AutoCloseable接口的类的对象才可以由这种带资源的try语句进行管理。

从JDK7开始,Closeable扩展了AutoCloseable。因此,在JDK7中,所有实现了Closeable接口的类也都实现了AutoCloseable接口。

try (FileInputStream fis = new FileInputStream("windcoer_com.txt")) {
	.....
}

抛出异常

throw new AuthenticatException("not-the-owner");
throw new BusinessException("needed-login");

JPA

@PageableDefault

默认排序

@PageableDefault(direction=Direction.DESC,sort={"displayOrder"}) Pageable pageable

条件查询

涉及翻页、动态查询、字符串小写化后模糊查询

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;


public Page<Award> allAwards(Award award,String searchText,Pageable pageable){
    return super.findAllWithDataRule((root,query,cb)->{
        Predicate predicate = cb.equal(root.get("isDeleted"), false);
        predicate = cb.and(predicate,cb.equal(root.get("activity").get("id"), ugcAward.getActivity().getId()));			
        if(StringUtils.isNotBlank(searchText)) {
            Predicate predicateOr = cb.or(cb.like(cb.lower(root.get("createdBy").get("username")), "%"+StringUtils.trim(searchText).toLowerCase()+"%"),
            cb.like(cb.lower(root.get("createdBy").get("displayName")), "%"+StringUtils.trim(searchText).toLowerCase()+"%"));
            predicate = cb.and(predicate,predicateOr);
        }
        return predicate; 
    }, pageable);
}

多表联查

  Subquery<Long> subquery = query.subquery(Long.class);
  Root<CategoryTreeXref> cateXrefRoot = subquery.from(CategoryTreeXref.class);
  subquery.select(cateXrefRoot.get("childId"));
  subquery.where(cb.equal(cateXrefRoot.get("parentId"), caseInfo.getCategory().getId()));
  predicate = cb.and(predicate,cb.in(root.get("category").get("id")).value(subquery));

虚拟列(@Formula)

import org.hibernate.annotations.Formula;

@Formula("(select count(distinct ae.user_id )  from activity_enrollment ae where ae.activity_id = id and ae.is_deleted = 0)")
	private Long enrollmentCount;

持久化前自动赋值(@PrePersist)

import javax.persistence.PrePersist;


@PrePersist
public void preInsert() {
    if(this.box == null) {
        Box box = new Box();
        this.setBox(box);
    }
}

Mybatis

${}-属性property

不同的属性值通过包含的实例变化.

属性值也可以被用在 include 元素的 refid 属性里或者 include 内部语句中,例如:

<sql id="sometable">
  ${prefix}Table
</sql>

<sql id="someinclude">
  from
    <include refid="${include_target}"/>
</sql>

<select id="select" resultType="map">
  select
    field1, field2, field3
  <include refid="someinclude">
    <property name="prefix" value="Some"/>
    <property name="include_target" value="sometable"/>
  </include>
</select>

当一段sql语句仅某些几个字段等不同时,为了重用sql语句,可用此方式解决。 Mapper XML 文件

模糊查询

MySQL

 lower(name) like  concat('%',lower(#{course.name}),'%')

Oracle

lower(name) like  '%'||lower(#{course.name})||'%'

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.2K20
来自专栏儿童编程

天干地支五行八卦的对应关系

19790
来自专栏儿童编程

一张导图梳理欧洲简史梗概

3.1K30
来自专栏儿童编程

我不是算命先生,却对占卜有了疑惑——如何论证“占卜前提”的正确与否

事出有因,我对《周易》感兴趣了很多年。只是觉得特别有趣,断断续续学习了一些皮毛。这几天又偶然接触到了《梅花易数》,觉得很是精彩,将五行八卦天干地支都串联了起来。...

15410
来自专栏儿童编程

声音功能让儿童编程更有创造性

导读:Scratch中声音功能非常强大,除了常规的音效,你甚至可以模拟各种乐器的各个发音、设置节拍、休止……如果你愿意,甚至可以用它创作一个交响乐。我们可以引导...

13840
来自专栏儿童编程

《动物魔法学校》儿童学编程Scratch之“外观”部分

导读:本文通过一个案例《动物魔法学校》来学习Scratch语言的“外观”部分。之后通过一系列其他功能的综合运用对作品功能进行了扩展。

19240
来自专栏儿童编程

儿童创造力教育与编程教育的碰撞——MIT雷斯尼克教授最新理论梗概

儿童编程教育已经在我国各一线二线城市疯狂出现,颇有“烂大街”的趋势。我们不禁要问很多很多问题:

22370
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

18230
来自专栏儿童编程

什么样的人生才是有意义的人生——没有标准的标准答案

【导读】其实我们可以跳出这个小圈圈去更加科客观地看一下这个世界。在夜晚的时候我们仰望天空,浩瀚的宇宙中整个地球只是一粒浮尘,何况地球上一个小小的人类?在漫长的历...

1.8K50
来自专栏儿童编程

一张图理清《梅花易数》梗概

学《易经》的目的不一定是为了卜卦,但是了解卜卦绝对能够让你更好地了解易学。今天用一张思维导图对《梅花易数》的主要内容进行概括,希望能够给学友们提供帮助。

32440

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励