jack_zhang

Results 41 issues of jack_zhang

参考: https://www.baeldung.com/jpa-queries-custom-result-with-aggregation-functions 确实没有提到DTO的nativeSql的用法; 但看Hibernate感觉应该是支持才对。 https://thoughts-on-java.org/dto-projections/ 难道要配置@SqlResultSetMapping: https://stackoverflow.com/questions/29082749/spring-data-jpa-map-the-native-query-result-to-non-entity-pojo 这是个什么原理和机制有待研究......

76页最后一行, 不考虑数据安全的情况下,尽量使用StringBuffer 是不是写错了呢? https://www.javatpoint.com/difference-between-stringbuffer-and-stringbuilder 是的,性能好的是StringBuilder

#### 公共GenericTokenRepository ```` import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.repository.query.Param; import org.springframework.transaction.annotation.Transactional; import java.time.Instant; import java.util.List; import java.util.Optional; /** * GenericTokenRepository 共同接口 * * @param UserToken/TeacherToken 这两个实体公用一个GenericTokenRepository...

### 只更新非null字段 ```` /** * @param user * @return */ @PostMapping("/user/notnull") public User saveUserNotNullProperties(@RequestBody User user) { //数据库里面取出最新的数据,当然了这一步严谨一点可以根据id和version来取数据,如果没取到可以报乐观锁异常 User userSrc = userRepository.findById(user.getId()).get(); //将不是null的字段copy到userSrc里面,我们只更新传递了不是null的字段 PropertyUtils.copyNotNullProperty(user,userSrc); return userRepository.save(userSrc); } ```` ```` package...

改成: ```` 改成,如下即可: spring.jpa.show-sql=false; logging.level.org.hibernate.SQL=DEBUG ```` 这样 sql就会通过logback的形式打印出来,会带上traceId,threadID等上下文信息; ![image](https://user-images.githubusercontent.com/11462004/136913767-599f2b75-1183-46ce-b65d-7e33485d8dc8.png)

### 出现N+1的SQL的场景,我们有如下四个实体,核心内容如下: ```` import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.hibernate.annotations.*; import javax.persistence.*; import javax.persistence.Entity; import javax.persistence.Table; import java.time.Instant; import java.util.HashSet; import java.util.List; import java.util.Set; @Setter @Getter @EqualsAndHashCode(of...

![image](https://user-images.githubusercontent.com/11462004/136765272-b6d05509-72cf-44ae-9316-1d5c373846dd.png) ![image](https://user-images.githubusercontent.com/11462004/136765326-c2df6db9-2d7f-4511-b2d3-73ec02b8bc7a.png) ![image](https://user-images.githubusercontent.com/11462004/136765380-7c97ea81-08ea-414a-ac77-ff1eb7aee53e.png)

因使用了Lombok @Builder注解,成员变量的初始化表达式将会被忽略,如果希望将初始化表达式设置为默认值,使用@Builder.Default注解,如果不希望改变属性值,使字段变为final; https://blog.csdn.net/yueloveme/article/details/103276381