idea JPA写法

 

无参数查询

 //无参的查找
    @Query("select  id,folderName from FolderEntity ")
    public List<FolderEntity> findIdAndFolderName();

查找方法可以使用自定义findIdAndFolderName()调用,也可使用findAll()及jdk8新方法使用:

   List<FolderEntity> folderList=this.folderRepository.findAll();
            List<String> folderNames=folderList.stream().map(FolderEntity::getFolderName).collect(Collectors.toList());
            folderNames.forEach(s -> {if(s==request.getFolderName()) {
                System.out.println("文件夹名称重复");
            } else{
                BeanUtils.copyProperties(request, folderEntity);
            }
            });

有参数查询:

@Query("select  id,folderName from FolderEntity where folderName=:folderName")
    public List<FolderEntity> findIdAndFolderName(String folderName);

 

您观察得很仔细!在原始配置中确实存在重复定义的问题,这是YAML格式的一个常见陷阱。以下是修正后的配置和详细解释: ### 修正后的配置(避免重复定义) ```yaml # MySQL专属配置(修正版) spring: config: activate: on-profile: mysql datasource: url: jdbc:mysql://localhost:3306/user_db?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 10 connection-timeout: 5000 # JPA相关配置(合并为一个区块) jpa: hibernate: ddl-auto: update show-sql: true properties: hibernate: format_sql: true open-in-view: false database-platform: org.hibernate.dialect.MySQL8Dialect # 数据存储相关配置(合并为一个区块) data: jpa: repositories: enabled: true # 启用JPA Repository cassandra: enabled: false # 禁用Cassandra ``` ### 关键修正点 1. **合并重复的`data`配置块**: - 原始配置中`spring.data`被拆分成两个独立块,这在YAML中会导致后定义的块完全覆盖前一个 - 修正后合并为一个`data`块,包含`jpa`和`cassandra`两个子配置 2. **层级结构优化**: - 将JPA相关配置统一放在`spring.jpa`下 - 将数据存储相关配置统一放在`spring.data`下 ### 为什么原始写法有问题? 在YAML中,当同一个父键(如`spring.data`)被多次定义时: ```yaml # 错误示例 spring: data: jpa: repositories: true data: # 这个会完全覆盖上面的data配置 cassandra: false ``` 实际生效的只有最后一个`data`块,相当于: ```yaml spring: data: cassandra: false ``` 导致`jpa.repositories.enabled`配置丢失。 ### 最佳实践建议 1. **配置分组原则**: - 相关配置应该放在同一个父键下 - 例如所有JPA配置放在`spring.jpa`下,所有数据源配置放在`spring.datasource`下 2. **使用IDE验证YAML**: - IntelliJ IDEA等工具可以实时检测YAML的重复键问题 - 格式化工具可以帮助保持结构清晰 3. **Spring Boot配置提示**: - 在application.yml中输入时,IDE通常会显示配置项的文档提示 - 可以确认`spring.data`下支持的子配置项 ### 完整的多Profile配置示例 ```yaml # 全局配置 spring: jpa: open-in-view: false --- # MySQL Profile spring: config: activate: on-profile: mysql datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: pass data: jpa: repositories: enabled: true cassandra: enabled: false # 显式禁用 --- # Cassandra Profile spring: config: activate: on-profile: cassandra data: cassandra: contact-points: 127.0.0.1 keyspace: mykeyspace jpa: repositories: enabled: false # 显式禁用JPA autoconfigure: exclude: - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration ``` 这种结构既避免了重复定义,又保持了配置的清晰性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值