//posi 获取搜索条件中 "_" 的位置
//searchText 页面搜索条件值
int posi = -1;
posi = searchText.trim().indexOf("_");
//构造查询条件
DetachedCriteria deCriteria=DetachedCriteria.forClass(PubStru.class);
//组织类型
deCriteria.add(Restrictions.eq("pubStruType.dataId", typeId));
//顶级组织不用判断下级,非顶级组织,搜索组织需在其上级组织的包含中
if(!struId.equals("corp0000") && getAllStruIds(struId).size() > 0) {
deCriteria.add(Restrictions.in("struId", getAllStruIds(struId)));
}
//如果查询条件包含"_",需对其进行转义 escape '/'
if(posi == 0) {
searchText = "/_"+searchText.substring(posi+1,searchText.length());
deCriteria.add(Restrictions.sqlRestriction("lower({alias}.stru_alias) like lower(?) escape '/'", "%"+searchText+"%", Hibernate.STRING));
}else if(posi > 0 ) {
searchText = searchText.substring(0,posi)+"/_"+searchText.substring(posi+1, searchText.length());
deCriteria.add(Restrictions.sqlRestriction("lower({alias}.stru_alias) like lower(?) escape '/'", "%"+searchText+"%", Hibernate.STRING));
}else {
deCriteria.add(Restrictions.ilike("struAlias", "%"+searchText+"%"));
}
分享到:
相关推荐
本文将深入探讨如何在Hibernate中利用查询条件创建List集合,这在处理复杂的数据筛选和聚合时尤其有用。 首先,让我们理解在Hibernate中创建List集合的基本概念。List集合是Java集合框架的一部分,它可以存储有序且...
4. 查询:使用`Session`的`createQuery()`或`createCriteria()`方法构建HQL(Hibernate Query Language)或Criteria查询,获取数据。 四、Ajax技术 Ajax(Asynchronous JavaScript and XML)允许在不刷新整个页面的...
此外,还需要确保防止SQL注入攻击,通过使用预编译的查询(如Hibernate的`NamedParameterJdbcTemplate`)或对输入进行适当的验证和转义。 总的来说,“hibernate hql where语句拼接工具类”是为了简化和规范化在...
2. Session与Transaction:Hibernate中的Session负责管理对象的状态,而Transaction则处理数据库的事务操作,两者是进行持久化操作的关键。 二、配置Hibernate 1. hibernate.cfg.xml:配置文件定义了数据库连接参数...
Struts、Spring和Hibernate是Java开发中非常流行的三大框架,它们各自在Web应用程序的不同层面上发挥着关键作用。Struts负责MVC(Model-View-Controller)架构中的控制层,Spring作为全面的轻量级框架,提供了依赖...
- 防止SQL注入:在处理用户输入时,应进行参数绑定或转义处理,防止恶意攻击。 - 错误处理:合理处理可能出现的异常,如数据库连接失败、查询无结果等情况。 - 安全性考虑:登录成功后,可以考虑使用Session或...
在登录系统中,Hibernate可以用于处理用户数据的持久化,将用户信息存储在数据库中,并在用户尝试登录时查询数据库以验证用户名和密码。 **Struts框架**:Struts是基于MVC(Model-View-Controller)设计模式的Web...
文档中还特别强调了配置属性,如SQL方言、外连接抓取、二进制流处理、自定义CacheProvider、事务策略、SessionFactory绑定到JNDI以及查询语言替换。这些配置选项对于优化应用程序性能和适应不同数据库系统至关重要。...
在本项目中,我们利用IntelliJ IDEA(IDEA)作为集成开发环境,Spring作为核心框架,Hibernate作为持久层框架,Struts2作为表现层框架,来构建一个简单的登录功能。这个组合通常被称为SSH(Spring、Struts2、...
这样的方式,Hibernate会自动处理参数,避免了直接将用户输入拼接到SQL字符串中。 2. **对参数位置进行绑定**: 类似于上一种方法,但不指定参数名,而是根据参数位置设置值。例如: ```java Query query = ...
- 数据访问层(DAO,Data Access Object):在Struts的Action类中,通过DAO调用Hibernate的Session方法来处理数据库操作。 - 服务层(Service):提供业务逻辑,封装DAO操作,供Action类调用。服务层可以进行事务...
- 注意在实际开发中,为了防止SQL注入,需要对用户的输入进行转义或使用预编译的SQL语句(如Hibernate的`Criteria`或JPA的`Query`)。 通过上述步骤,我们可以实现SSH框架下的登录功能,对用户信息进行增删改查...
【Struts面试相关内容1】涉及的知识点主要集中在Java Web开发中的持久层技术,包括Hibernate、MyBatis和Struts2,以及相关的缓存策略和数据处理。以下是对这些知识点的详细解释: 1. Hibernate和MyBatis的区别: -...
如果应用程序没有对输入进行适当的清理或转义,攻击者可以在用户名字段中输入'张三' OR '1'='1',那么查询就会变成: select count() from tb_admin where Name='张三' OR '1'='1' 由于'1'='1'始终为真,这个查询...
此外,还可以使用参数绑定或者ORM框架(如Hibernate)来处理用户输入,这些方法都会自动处理潜在的SQL注入风险。 接下来,我们讨论一下跨站脚本(XSS)攻击。XSS攻击发生在攻击者将恶意脚本插入到其他用户看到的...
MyBatis允许在XML映射文件或注解中使用#{param}作为占位符,Hibernate则支持HQL(Hibernate Query Language)和Criteria API,它们都提供了更强大的动态查询能力。 例如,在MyBatis中,你可以这样写: ```xml ...
1. **未正确过滤转义字符**:如果用户输入的数据不经过转义处理,攻击者可以插入SQL语句片段,改变查询逻辑。例如,注入 `' OR '1'='1` 可使所有用户都能通过认证。 2. **非法类型处理**:当用户输入的数据类型未被...
5. **使用ORM框架**:像Hibernate这样的对象关系映射框架可以自动处理SQL注入问题。 6. **定期审计和更新**:定期检查代码中的SQL查询,确保它们不会引入新的安全漏洞。 总之,理解SQL注入的原理并采取相应的预防...
6. **使用ORM(对象关系映射)框架**:ORM如Hibernate或Entity Framework可以自动处理SQL注入问题,因为它们通常会自动转义用户输入并使用预编译语句。 7. **白名单或黑名单过滤**:SQLInner可能有内置的规则,只...