刚接触ibatis,不太熟,所以利用下午时间摸索着写了一个多条件查询
给刚入门或者想学的同学借鉴一下。
配置我就不赘述了,网上一搜一大把。
数据库里有一张表,表结构如下所示:
id |
author |
date |
content |
1 |
.. |
.. |
.. |
2 |
.. |
.. |
..
|
现在只是为了演示,所以查询就两个,
使用author,content,content使用like模糊查询
jsp页面:
<div>
<s:form action="getMessageAction" namespace="/user">
<table>
<tr><td>作者:</td><td><s:textfield name="searchMessageTO.author"></s:textfield></td></tr>
<tr><td>内容:</td><td><s:textfield name="searchMessageTO.content"></s:textfield></td></tr>
<tr><td colspan=2><s:submit id="submit1" value="search" /></td></tr>
</table>
</s:form>
</div>
model 类
package com.ncs.model;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="message")
public class Message {
@Id
@GeneratedValue
private int id;
private Date date;
private String content;
private String author;
public int getId() {
return id;
}
public Date getDate() {
return date;
}
public String getContent() {
return content;
}
public String getAuthor() {
return author;
}
public void setId(int id) {
this.id = id;
}
public void setDate(Date date) {
this.date = date;
}
public void setContent(String content) {
this.content = content;
}
public void setAuthor(String author) {
this.author = author;
}
}
to类,即,搜索条件类,我们利用author,content为搜索条件,所以在这个类只有他们两个属性。
package com.ncs.to;
public class SearchMessageTO {
private String author;
private String content;
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
然后是sqlmap的配置文件,message.xml,命名不规范,请见谅
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="/message">
<typeAlias alias="message" type="com.ncs.model.Message" />
<resultMap id="messageResult" class="message">
<result property="id" column="id" />
<result property="content" column="content" />
<result property="date" column="date" />
<result property="author" column="author" />
</resultMap>
<sql id="testSearch">
select * from message where 1=1
<isNotNull property="author">
and author=#author# <!-- 如果attr=abc,#attr#会被解析成'abc',$abc$则是abc -->
</isNotNull>
<isNotNull property="content">
and content like '%$content$%'
</isNotNull>
</sql>
<select id="getAll" resultClass="message">
select * from message
</select>
<select id="getMessage" parameterClass="java.util.HashMap" resultMap="messageResult">
<include refid="testSearch"/>
</select>
</sqlMap>
最后是DAO,在DAO里面需要转换一下searchMessageTO的属性值,注意""跟null的区别
public List<Message> getMessages(SearchMessageTO searchMessageTO) {
// TODO Auto-generated method stub
Map map = new HashMap();
map.put("author", StringUtils.ConvertEmpty2Null(searchMessageTO.getAuthor()));
map.put("content", StringUtils.ConvertEmpty2Null(searchMessageTO.getContent()));
List<Message> messageList=sqlMapClientTemplate.queryForList("getMessage",map);
return messageList;
}
分享到:
相关推荐
ibatis动态多条件组合查询 实例 说明
Ibatis 是一款轻量级的持久层框架,它与 JDBC 集成,但比 JDBC 更加方便,更易于管理数据库操作。...在实际项目中,可以根据具体需求调整查询策略,如添加条件查询、分页等,以满足不同的业务场景。
在本资源中,"iBatis条件查询"着重展示了如何根据业务需求定制SQL语句进行数据检索,尤其在不涉及复杂关联查询的情况下,iBatis可以提供高效且简单的解决方案。 首先,iBatis的核心概念是SQL Map,它是一个XML配置...
iBatis 动态查询条件详解 iBatis 是一个基于 Java 的持久层框架,它提供了动态查询条件的功能,可以根据不同的条件生成不同的 SQL 语句。在 iBatis 中,动态查询条件是通过 `<dynamic>` 元素来实现的,该元素可以...
当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...
以上内容详细介绍了 ibatis 中动态查询的基本原理及具体实现方法,包括模糊查询、多条件组合查询以及使用 Map 作为参数的高级用法。这些知识点对于深入理解 ibatis 的动态查询机制非常重要,可以帮助开发者更高效地...
在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...
注意,iBatis还支持动态SQL,这意味着你可以在XML配置文件中使用`<if>`、`<choose>`、`<when>`等标签来根据条件动态构建SQL语句,这对于复杂的连接查询非常有用。 总的来说,iBatis提供了强大的SQL定制能力,使得...
通过指定起始节点(START WITH)和连接条件(CONNECT BY),我们可以构建出一个递归查询,从而获取整个树结构。 例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段...
### iBatis 多表查询知识点详解 #### 一、iBatis简介 iBatis 是一款优秀的持久层框架,它将 SQL 映射到 Java 对象,简化了 JDBC 编程过程中的繁琐操作,提高了开发效率。iBatis 的核心功能包括 SQL 映射、动态 SQL...
根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...
本教程聚焦于如何使用Ibatis查询指定ID的单个对象,这对于日常的数据检索工作尤为重要。 首先,理解Ibatis的基本架构。Ibatis不是一个完整的ORM(对象关系映射)框架,而是介于SQL和Java之间的桥梁,允许开发者编写...
动态查询语句配置是Ibatis的一个重要特性,它允许我们在运行时根据业务需求构建灵活多变的SQL语句。这篇博文主要探讨的是如何在Ibatis中设置和使用动态SQL,以便实现更高效、更灵活的数据查询。 首先,我们需要理解...
这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和删除(CRUD)操作,以及调用数据库存储过程和函数。 一、iBatis简介 iBatis最初由MyBatis的创始人Clinton ...
- 避免在`WHERE`子句中使用多个条件或`OR`操作符,而是应该使用`IN`操作符或者`UNION ALL`合并多个查询。 3. Struts、Spring与Ibatis的集成: - Struts作为MVC框架,主要负责视图与控制器的交互。在项目中,`...
Ibatis,作为一个轻量级的Java持久层框架,提供了灵活的SQL映射机制,自然也支持分页查询。本文将深入探讨Ibatis实现分页的相关知识点,并基于提供的标签“源码”和“工具”,分享如何在实际项目中运用Ibatis进行...
在SQL查询中,`AND` 和 `OR` 是用来连接两个或多个条件的关键字。`AND` 关键字用于组合条件,并且只有当所有组合的条件都被满足时,才会返回相应的行;而 `OR` 关键字则只要其中一个条件被满足就会返回相应的行。 ...
iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于 iBatis 是一个流行的持久层框架,提供了许多强大的功能来帮助开发者构建高效、安全的数据库交互应用程序。本文将详细介绍 iBatis 中使用安全的拼接语句、...
本文将深入探讨`iBatis` 中的一对多映射关系,以及如何通过源码理解和使用这个特性。 一对多映射是数据库关系模型中的常见概念,指的是一个父表(如部门表)可以对应多个子表(如员工表),每个部门可以有多个员工...
4. **动态SQL**:Ibatis的动态SQL功能非常强大,可以在XML映射文件中通过`<if>`、`<choose>`、`<when>`、`<otherwise>`、`<where>`等标签实现条件判断,使得SQL语句更加灵活。 5. **参数映射**:Ibatis支持多种方式...