猿问

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

您好我需要根据用户选择动态构建查询。我不能用 if 语句写 where 条件,因为我在 table 中有 50 列。有没有 if 语句的方法?


慕少森
浏览 159回答 2
2回答

慕桂英4014372

你的意思是如何避免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();

拉丁的传说

您可以查看 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/
随时随地看视频慕课网APP

相关分类

Java
我要回答