为了账号安全,请及时绑定邮箱和手机立即绑定

java基于用户搜索的动态where子句

java基于用户搜索的动态where子句

慕少森 2022-01-12 16:43:33
您好我需要根据用户选择动态构建查询。我不能用 if 语句写 where 条件,因为我在 table 中有 50 列。有没有 if 语句的方法?
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

你的意思是如何避免sql注入,比如在运行时连接sql语句?


    static final String INVOICE_QUERY = "SELECT inv from Invoice inv WHERE (:createDate IS NULL OR inv.createDate = :createDate) AND (:quantity IS NULL OR inv.quantity = :quantity) AND (:custName IS NULL OR inv.custName = :custName)";

    Session session = getHibernateTemplate().getSessionFactory().openSession();


    Query query = session.createQuery(INVOICE_QUERY);

    query.setDate("createDate", createDate);

    if(quantity != null)

        query.setLong("quantity", quantity);

    else

        query.setBigInteger("quantity", null);

    if(StringUtils.isNotBlank(custName))

        query.setString("custName", custName);

    else

        query.setString("custName", null);

    return query.list();


查看完整回答
反对 回复 2022-01-12
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

您可以查看 CrtitriaAPI 或者您可以通过示例使用休眠功能查询

实际上,如果您使用带有弹簧数据模块的弹簧,您可以查看规格

请查看以下链接:

https://dzone.com/articles/hibernate-query-example-qbe https://vladmihalcea.com/query-entity-type-jpa-criteria-api/ https://spring.io/blog/2011/04 /26/advanced-spring-data-jpa-specifications-and-querydsl/


查看完整回答
反对 回复 2022-01-12
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信