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());
        }
    }
  • 相关阅读:
    常用的输出方法
    使用Action()和ActionLink()生成链接
    "??"运算符
    使用路由数据
    路由匹配总结
    routes.MapRoute()定义路由的要求
    控制器和视图数据传递小结
    跨请求数据传递TempData
    Redis安装创建
    JAVA获取当前时间加一天
  • 原文地址:https://www.cnblogs.com/luoxiaolei/p/4272473.html
Copyright © 2011-2022 走看看