ibatis自带的入门例子中,查询条件只有一个。多数情况下,查询条件都是多个的。如果要实现多条件查询,如何实现?
百度了一下,有以下解决方案:
1,在java代码中使用字符串拼接
映射文件中这样写:
view plaincopy to clipboardprint?
<select id="getBrno" parameterClass="java.lang.String" resultMap="bctlResult">
select brno,brname from bctl where $sql$
</select>
<select id="getBrno" parameterClass="java.lang.String" resultMap="bctlResult"> select brno,brname from bctl where $sql$ </select>
然后再java文件中拼写出SQL的条件语句:
view plaincopy to clipboardprint?
1. String sql= " brno like"+ b +"and pigday" = p;// b和p都是变量。
String sql= " brno like"+ b +"and pigday" = p;// b和p都是变量。
再在方法中调用传递进去:
view plaincopy to clipboardprint?
1. brList = sqlMap.queryForList("CR.getBrno", sql);
brList = sqlMap.queryForList("CR.getBrno", sql);
这是一种方法,很明显这种方法有一种弊端,就是sql语句需要写在java源文件中。如果需要更改查询条件,就不得不修改java文件,再重新编译。这与ibatis的本意有些违背。
因此本人没有测试过以上方法是否可行。
2,直接在映射文件中配置参数
映射文件这样写:
view plaincopy to clipboardprint?
1. <!-- 多条件查询-->
2. <parameterMap id="myParam" class="java.util.HashMap">
3. <parameter property="id"/>
4. <parameter property="name"/>
5. </parameterMap>
6. <select id="multConQuery" parameterMap="myParam" resultClass="Department">
7. select * from department where id = ? and name = ?
8. </select>
<!-- 多条件查询--> <parameterMap id="myParam" class="java.util.HashMap"> <parameter property="id"/> <parameter property="name"/> </parameterMap> <select id="multConQuery" parameterMap="myParam" resultClass="Department"> select * from department where id = ? and name = ? </select>
java文件中这样调用:
view plaincopy to clipboardprint?
1. public Department queryDepartmentByIdAndName(int id,String name)
2. {
3. Department dept = new Department();
4. try
5. {
6. sqlMapClient.startTransaction();
7. HashMap hmParam = new HashMap();
8. hmParam.put("id",id);
9. hmParam.put("name",name);
10. sqlMapClient.queryForObject("multConQuery",hmParam,dept);
11. sqlMapClient.commitTransaction();
12. }
13. catch(Exception e)
14. {
15. e.printStackTrace();
16. }
17. return dept;
18. }
public Department queryDepartmentByIdAndName(int id,String name) { Department dept = new Department(); try { sqlMapClient.startTransaction(); HashMap hmParam = new HashMap(); hmParam.put("id",id); hmParam.put("name",name); sqlMapClient.queryForObject("multConQuery",hmParam,dept); sqlMapClient.commitTransaction(); } catch(Exception e) { e.printStackTrace(); } return dept; }
不知道还有没有其他的方法,欢迎讨论,各抒己见!
分享到:
相关推荐
在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...
通过指定起始节点(START WITH)和连接条件(CONNECT BY),我们可以构建出一个递归查询,从而获取整个树结构。 例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段...
根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...
1. 接收对象参数,用于设置更新语句的输入值或查询语句的WHERE子句条件。 2. 执行映射的Statement,iBATIS框架创建PreparedStatement,使用参数对象,执行SQL并从结果集中构建返回对象。 3. 返回结果,如果是更新...
本文将围绕“IBATIS开发使用实例”这一主题,深入解析复杂SQL查询的应用,尤其是如何利用SQL进行多表关联、条件筛选以及聚合函数的使用。 ### IBATIS简介 IBATIS,现被称为MyBatis,是一种优秀的持久层框架,它...
Ibatis的动态SQL功能使得在处理多对多关系时可以根据条件灵活地构造查询。例如,可以通过`if`、`choose`、`when`等标签来决定是否包含特定的关联数据。 5. **缓存机制** 考虑到性能,Ibatis提供了缓存机制。对于...
与“一站式”ORM解决方案相比,ibatis要求开发者更直接地参与到SQL语句的编写中,这对于那些希望对数据库操作有更多控制权的开发人员来说是一个优势。同时,ibatis还提供了一系列的高级特性,如数据关联、动态映射、...
通过分析提供的代码片段,我们可以了解到在实际开发过程中,这种动态 SQL 的构建方式非常常见,尤其是在处理复杂的查询条件时。 ### 一、iBatis 框架简介 iBatis 是一个基于 Java 的持久层框架,它将 SQL 映射语句...
3. 结果映射:通过`<resultMap>`标签,可以定义如何将查询结果映射到Java对象,包括一对一、一对多、多对一、自定义类型转换等多种映射方式。这使得数据转换变得简单,提高了代码的可读性和可维护性。 4. 映射文件...
Ibatis 是一款优秀的Java持久层框架,它与Hibernate和JPA等ORM框架不同,Ibatis 提供了更为灵活的SQL映射机制,允许开发者直接编写SQL语句,从而更好地控制查询过程,提高性能。在本资源"ibatis2.3.4.rar"中,包含了...
- **动态SQL**:掌握如何使用iBATIS的动态SQL功能,实现条件语句和循环结构的动态构建。 ### iBATIS在现实世界的应用 - **性能优化与缓存**:了解如何利用iBATIS的缓存机制来提高应用性能,减少数据库访问次数。 -...
此外,iBatis支持预编译的PreparedStatement,以防止SQL注入攻击,并提供了强大的结果集映射功能,能够自动将查询结果转换为Java对象,甚至处理一对多、多对一等复杂关系。同时,它的事务控制灵活,既支持手动控制,...
Ibatis支持动态SQL,允许在XML配置文件中根据条件拼接SQL语句,极大地提高了SQL的灵活性和可维护性。 #### 3.2 参数映射 Ibatis能自动将Java对象的属性值映射到SQL语句的参数,反之也能将查询结果映射到Java对象。...
iBatis提供了本地缓存和二级缓存机制,可以提高查询效率。开发者可以根据需求配置缓存策略,例如开启或关闭缓存,设置缓存有效期等。 9. **插件**: iBatis支持自定义插件,通过拦截器机制,可以在执行SQL前或后...
例如,使用`<if>`元素可以实现条件判断,`<choose>`, `<when>`, `<otherwise>`元素可以实现多条件分支,`<trim>`, `<where>`, `<set>`元素可以简化SQL语句的拼接,`<foreach>`元素则可以处理集合参数。 通过上述...
3. 结果映射:iBatis能够自动将查询结果转换为Java对象,支持一对一、一对多、多对多等多种映射关系。 4. 缓存机制:iBatis提供了本地缓存和二级缓存,以提高数据读取速度,减少数据库交互。 5. 易于集成:iBatis...
文档中应该会有实例展示如何利用动态SQL来实现条件查询、聚合函数和子查询等功能。 最后,文档可能还会涉及到iBATIS的高级特性,比如缓存机制,它可以提高数据访问的性能。iBATIS提供了本地缓存和二级缓存两种方式...
### ibatis SQL语句对条件中特殊字符% # 处理 在开发过程中,经常会遇到SQL查询时需要处理字符串中的特殊字符的情况。特别是在使用类似`LIKE`这样的操作符时,如果用户输入的数据中含有`%`、`_`或`#`等特殊字符,...
13. **案例分析**:通过实际案例展示iBatis在不同场景下的应用,如CRUD操作、复杂查询、批量处理等。 14. **与其他框架集成**:探讨如何将iBatis与Spring、Hibernate等其他框架集成,构建更强大的企业级应用。 这...