`
SIHAIloveYAN
  • 浏览: 119939 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

struts实战--实现条件查询(利用dbutils)

 
阅读更多

struts实现条件查询---利用dbutils

一.在list.jsp页面修改查询组件


是否上传简历
<s:select list="#{'1':'有','2':'无'}" name="isUpload" id="isUpload" headerKey="0" headerValue="--请选择--"></s:select>

<%@ page language="java" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<HTML>
	<HEAD>
		<meta http-equiv="Content-Language" content="zh-cn">
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<link href="${pageContext.request.contextPath}/css/Style.css" rel="stylesheet" type="text/css" />
		<script language="javascript" src="${pageContext.request.contextPath}/js/public.js"></script>
		<script type="text/javascript" src="${pageContext.request.contextPath }/jquery/jquery-1.4.2.js"></script>
		<script type="text/javascript">
			function addUser(){
				window.location.href = "${pageContext.request.contextPath}/user/add.jsp";
			}
			$(function(){
				// 为删除链接 加确认效果
				$(".delLink").click(function(event){
					var isConfirm = window.confirm("想好了吗?");
					if(!isConfirm){
						// 阻止提交
						event.preventDefault();
					}
				});
			});
		</script>
	</HEAD>
	<body>
		<br>
		<s:form action="user_list" namespace="/" method="post" theme="simple" id="Form1" name="Form1">
			<table cellSpacing="1" cellPadding="0" width="100%" align="center" bgColor="#f5fafe" border="0">
				<TBODY>
					<tr>
						<td class="ta_01" align="center" bgColor="#afd1f3">
							<strong>查 询 条 件</strong>
						</td>
					</tr>
					<tr>
						<td>
							<table cellpadding="0" cellspacing="0" border="0" width="100%">
								<tr>
									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
										用户姓名
									</td>
									<td class="ta_01" bgColor="#ffffff">
										<s:textfield name="userName" size="15" id="Form1_userName" cssClass="bg"/>
									</td>
									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
										性别:
									</td>
									<td class="ta_01" bgColor="#ffffff">
										<s:select list="{'男','女'}" name="sex" id="sex" headerKey="" headerValue="--选择性别--"></s:select>
									</td>
								</tr>
								<tr>
									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
										学历:
									</td>
									<td class="ta_01" bgColor="#ffffff">
										<s:select list="{'博士','硕士','研究生','本科','专科','高中'}" name="education" id="education" headerKey="" headerValue="--选择学历--"></s:select>
									</td>
									<td height="22" align="center" bgColor="#f5fafe" class="ta_01">
										是否上传简历
									</td>
									<td class="ta_01" bgColor="#ffffff">
										<s:select list="#{'1':'有','2':'无' }" name="isUpload" id="isUpload" headerKey="" headerValue="--请选择--"></s:select>
									</td>
								</tr>
								<tr>
									<td width="100" height="22" align="center" bgColor="#f5fafe"
										class="ta_01">
									</td>
									<td class="ta_01" bgColor="#ffffff">
										<font face="宋体" color="red"> </font>
									</td>
									<td align="right" bgColor="#ffffff" class="ta_01"><br><br></td>
									<td align="right" bgColor="#ffffff" class="ta_01">
										<button type="submit" id="search" name="search" value="查询" class="button_view">
查询
</button>

										
										<input type="reset" name="reset" value="重置" class="button_view"/>

									</td>
								</tr>
							</table>
						</td>

					</tr>
					<tr>
						<td class="ta_01" align="center" bgColor="#afd1f3">
							<strong>用 户 列 表</strong>
						</TD>
					</tr>
					<tr>
						<td class="ta_01" align="right">
							<button type="button" id="add" name="add" value="添加" class="button_add" onclick="addUser()">
添加
</button>

						</td>
					</tr>
					<tr>
						<td class="ta_01" align="center" bgColor="#f5fafe">
							<table cellspacing="0" cellpadding="1" rules="all"
								bordercolor="gray" border="1" id="DataGrid1"
								style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; WIDTH: 100%; WORD-BREAK: break-all; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: #f5fafe; WORD-WRAP: break-word">
								<tr
									style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3">

									<td align="center" width="18%">
										登录名
									</td>
									<td align="center" width="17%">
										用户姓名
									</td>
									<td align="center" width="8%">
										性别
									</td>
									<td align="center" width="23%">
										联系电话
									</td>
									<td width="11%" align="center">
										学历
									</td>
									<td width="7%" align="center">
										编辑
									</td>
									<td width="7%" align="center">
										查看
									</td>
									<td width="7%" align="center">
										删除
									</td>
								</tr>
								<s:iterator value="users" var="user">
										<tr onmouseover="this.style.backgroundColor = 'white'"
											onmouseout="this.style.backgroundColor = '#F5FAFE';">
											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
												width="18%">
												<!-- user会push到root 同时 保存contextMap -->
												<s:property value="logonName"/>
												<s:property value="#user.logonName"/>
											</td>
											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
												width="17%">
												<s:property value="#user.userName"/>
											</td>
											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
												width="8%">
												<s:property value="#user.sex"/>
											</td>
											<td style="CURSOR: hand; HEIGHT: 22px" align="center"
												width="23%">
												<s:property value="#user.telephone"/>
											</td>
											<td style="CURSOR: hand; HEIGHT: 22px" align="center">
												<s:property value="#user.education"/>
											</td>
											<td align="center" style="HEIGHT: 22px">
												<s:a action="user_editview" namespace="/">
													<s:param name="userID" value="#user.userID"></s:param>
													<img src="${pageContext.request.contextPath}/images/i_edit.gif" border="0" style="CURSOR: hand">
												</s:a>
											</td>
											<td align="center" style="HEIGHT: 22px">
												<s:a action="user_view" namespace="/">
													<s:param name="userID" value="#user.userID"></s:param>
													<img src="${pageContext.request.contextPath}/images/button_view.gif" border="0" style="CURSOR: hand">
												</s:a>
											</td>
											<td align="center" style="HEIGHT: 22px">
												<s:a action="user_delete" namespace="/" cssClass="delLink">
													<s:param name="userID" value="#user.userID"></s:param>
													<img src="${pageContext.request.contextPath}/images/i_del.gif" width="16" height="16" border="0" style="CURSOR: hand">
												</s:a>
											</td>
										</tr>
								</s:iterator>		
							</table>
						</td>
					</tr>
				</TBODY>
			</table>
		</s:form>
	</body>
</HTML>





二.添加校验

三.完成条件查询操作
1、是否上传简历,怎样在action中获取?

需要在User中添加一个属性 String isUpload



2、 在dao中怎样根据条件查询?

在这里dao层我们使用的是dbutils,所以进行条件查询的时候需要用到QueryRunner类,而他的查询方法queryRunner.query(sql,
new BeanListHandler<User>(User.class), argList.toArray());需要sql语句,和所有参数的这两个参数,所以我们需要解决这两个问题。

1).sql语句生成

2).参数怎样传递?

创建一个List<Object>,在每一次判断时,直接将参数添加到集合中,
最后将集合转换成Object[],做为参数传递到query方法中。
  String sql = "select * from s_user where 1=1 ";
                List<Object> params=new ArrayList<Object>();
                String username = user.getUserName();
                if (username != null && username.trim().length() > 0) {
                    sql += " and userName like ?";
                    params.add("%"+username+"%");
                }
                String sex = user.getSex();
                if (sex != null && sex.trim().length() > 0) {
                    sql += " and sex=?";
                    params.add(sex);
                }
                String education = user.getEducation();
                if (education != null && education.trim().length() > 0) {
                    sql += " and education=?";
                    params.add(education);
                }

                String isupload = user.getIsUpload();
                if ("1".equals(isupload)) {
                    sql += " and filename is not null";
                } else if ("2".equals(isupload)) {
                    sql += " and filename is null";
                }

                QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());

                return runner.query(sql, new BeanListHandler<User>(User.class),params.toArray());

/**
	 * 条件查询
	 * 
	 * @param user
	 * @return
	 */
	public List<User> findByCondition(User user) {
		// 根据用户姓名、性别、学历、是否上传简历 组合查询
		String sql = "select * from s_user where 1=1 ";
		List<String> argList = new ArrayList<String>(); // 参数列表
		if (user.getUserName() != null
				&& user.getUserName().trim().length() > 0) {
			sql += "and userName like ? ";
			argList.add("%" + user.getUserName() + "%");
		}
		if (user.getSex() != null && user.getSex().trim().length() > 0) {
			sql += "and sex = ? ";
			argList.add(user.getSex());
		}
		if (user.getEducation() != null
				&& user.getEducation().trim().length() > 0) {
			sql += "and education = ? ";
			argList.add(user.getEducation());
		}
		if (user.getIsUpload() != null
				&& user.getIsUpload().trim().length() > 0) {
			if (user.getIsUpload().equals("1")) {
				// 上传简历
				sql += "and filename is not null";
			} else if (user.getIsUpload().equals("2")) {
				// 没有上传简历
				sql += "and filename is null";
			}
		}

		try {
			List<User> users = queryRunner.query(sql,
					new BeanListHandler<User>(User.class), argList.toArray());
			return users;
		} catch (SQLException e) {
			e.printStackTrace();
			throw new MySQLException(e);
		}

	}



分享到:
评论

相关推荐

    commons-dbutils-1.7-API文档-中文版.zip

    赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...

    commons-dbutils-1.7.rar

    commons-dbutils-1.7.jar,commons-dbutils-1.7-javadoc.jar,commons-dbutils-1.7-sources.jar,commons-dbutils-1.7-tests.jar,commons-dbutils-1.7-test-sources.jar

    commons-dbutils-1.7.jar

    commons-dbutils-1.7.jar 最新

    commons-dbutils-1.4.jar

    commons-dbutils-1.4.jar

    commons-dbutils-1.3.zip

    在导入并使用“commons-dbutils-1.3.jar”后,开发者可以利用其提供的便捷功能,如QueryRunner类,用于执行SQL查询和更新操作,以及ResultSetHandler接口,用于处理查询结果。 以下是DBUtils库1.3版本中的一些关键...

    commons-dbutils-1.7

    2. **QueryRunner类**:DbUtils中的`QueryRunner`类是其核心组件,它提供了执行SQL查询和更新的方法。例如,`query()`方法用于执行查询,`update()`方法用于执行DML(插入、更新、删除)操作。这些方法支持使用预...

    commons-dbutils-1.6.jar

    commons-dbutils-1.6.jar

    commons-dbutils.jar.rar

    - `commons-dbutils-1.6.jar`: 相对于1.3版,可能会有性能改进、bug修复和新功能的添加。 - `commons-dbutils-1.7.jar`: 最新版本,通常会提供更好的兼容性和更多的改进。 5. **使用场景** DBUtils适用于那些...

    commons-dbutils-1.6

    这个项目在1.6版本中包含了两个主要的jar文件:`commons-dbutils-1.6.jar`和`commons-dbutils-1.6-sources.jar`。 `commons-dbutils-1.6.jar`是运行时库,它提供了大量的静态方法来处理数据库操作。这个库的核心...

    commons-dbutils-1.6的jar包

    好用的commons-dbutils-1.6的jar工具包,其中是包含3个:commons-dbutils-1.6.jar、commons-dbutils-1.6-javadoc.jar和commons-dbutils-1.6-sources.jar

    commons-dbutils-1.6.rar所有jar包

    这个压缩包文件"commons-dbutils-1.6.rar"包含了DBUtils的1.6版本,这是一个非常受欢迎的开源项目,用于简化Java数据库编程。DBUtils的核心理念是通过提供实用程序类来消除JDBC的繁琐和易错性,使开发人员能够更专注...

    commons-dbutils-1.4-bin

    Common Dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成List。 补充一下,传统操作数据库的类指的是JDBC(java database connection:java数据库连接,java的数据库操作的基础API...

    commons-dbutils-1.5.jar

    commons-dbutils-1.5.jar

    Commons-dbutils1.7 jar包.rar

    commons-dbutils包是Apache开源组织提供的用于操作数据库的工具包。简单来讲,这个工具包就是用来更加方便我们操作数据库的,最近工作中使用了一下,感觉确实方便很多,基本告别自己封装JDBC代码对数据库进行增删改...

    commons-dbutils-1.7-API文档-中英对照版.zip

    赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...

    commons-dbutils-1.6.jar包

    包org.apache.commons.dbutils DbUtils是一个为简化JDBC操作的小类库. 接口摘要 ResultSetHandler 将ResultSet转换为别的对象的工具. RowProcessor 将ResultSet行转换为别的对象的工具. 类摘要 BasicRowProcessor ...

Global site tag (gtag.js) - Google Analytics