ibatis多条件查询

刚接触ibatis,不太熟,所以利用下午时间摸索着写了一个多条件查询

给刚入门或者想学的同学借鉴一下。

配置我就不赘述了,网上一搜一大把。

 

 

数据库里有一张表,表结构如下所示:

 

idauthordatecontent
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;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值