zoukankan      html  css  js  c++  java
  • Spring Data JAP 多个不是必填的查询条件处理

    简单的介绍一下使用场景,DAO层用Spring Data实现,dao 只有接口,实现类是容器启动时动态字节码生成,接口里定义方法,方法上@Query 里写JPQL查询语句。

    基于以上的限制,如果对一个实体做查询,条件有多个,而且每个条件又不是必填的,怎么弄?参数肯定必须传,传Null或空字符串肯定不行,今天下午项目组里就有人遇到这个问题了。

    我之前搞过,但是代码没找到,自己回想一下又试了试成了,然后代码丢给PG了。

    这回代码贴出来,省得再丢,代码如下:
    DAO接口

    1
    2
    3
    4
    5
    6
    public interface ActivityDao extends JpaRepository<Activity, Integer> {
     
        @Query("SELECT a FROM Activity a WHERE (a.code=:code OR :code = null) AND (a.name=:name OR :name = null)")
        public List<Activity> findByCodeAndName(@Param("code") String code, @Param("name") String name);
     
    }

    Junit

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:META-INF\appContext.xml")
    public class ActivityDaoTest extends AbstractJUnit4SpringContextTests {
     
        @Resource
        private ActivityDao dao;
     
        @Test
        public void test() {
            // List<Activity> list = dao.findByCodeAndName("33", "3");
            List<Activity> list = dao.findByCodeAndName("33", null);
            System.out.println(list.size());
        }
    }
  • 相关阅读:
    回调那些事儿
    v-if和v-show小对比
    导出下载功能
    vue和react
    Redis 实现抢票
    MySQL 各种连接,
    MySQL的分组,降序 实现
    MySQL 窄表转宽表
    EX: 判断密码, 判断字符必须包含大写,小写,数字,特殊字符 ,并且键盘不能连续
    hive 基础
  • 原文地址:https://www.cnblogs.com/luoxiaolei/p/4272473.html
Copyright © 2011-2022 走看看