mybatis+struts2+html(jstl)+css

            从10月8号到今天23号,来到工作已经半个月了,这是我人生中真正意义上的一次步入社会,用自己20年的坚持和努力取得的人生第一步,说实话,感觉自己真的是个lucky dog,好像是在眷顾我,所有的事情都是那么顺利,让我没有理由不珍惜现在的所有,谢谢老师,一次次的满足我的请求,这半月我收货到的不管是从为人处世,团队管理,还是技术方面都很多,所以每天晚上睡觉都会一躺就着,因为一睁开眼就会忙碌一天,不过真的真的很充实,下面先说说我从技术上的收获。

最近这段时间一直接触的是后台,咋说呢?最大的感受就是在学校的实践对我的影响是毋庸置疑的,加上后来参加java3.1和4.0,s让我能够比较快的接受现在的框架,说一下我最近做的一个模块:邀请管理。

需求:我们公司是一个理财公司,大家都知道邀请码,如果一个人邀请了另一个人会让被邀请人在注册时输入邀请码,如下图:

那在后来呢,在没有升级之前是没有对邀请人和被邀请人进行关联的,只有一个实体,那就有人给客服打电话说我明明已经输入邀请码了呀,为什么没有显示,那为什么邀请人会这么想要别人输入邀请码呢,因为如果被邀请人投资了,那么邀请人会有提成,所以需求就这么产生了,我们需要添加邀请人和被邀请人的关系,并且可以禁用,但是不可以修改,因为如果可以修改,操作后台的人就发财了,他可以随便把邀请人换成自己,所以这个是不可以的,而且还需要可以导出,其实还是挺简单的。下面我们先来说说查询功能:

MyBatis:

在这里我们需要写入查询语句,这个语句真的很庞大,需要从客户表中查出邀请人和被邀请人的信息,然后去投资表中查出被邀请人投资金额,在邀请人和被邀请人的关系表中查出该邀请人和被邀请人的关系:

           T_CUST_USER:客户表;T_LOAN_BID:投资表;T_CUST_USER_INVITE:邀请表

           下面看下我的sql语句:           

<span style="font-family: Arial, Helvetica, sans-serif;"><sqlMap namespace="<strong>CustomerUserInvite</strong>"></span>
<select id="<strong>queryInviterList</strong>" parameterClass="map" resultClass="java.util.HashMap">
		<![CDATA[
			SELECT t8.*,T9."NAME" FROM(		
SELECT t7.* FROM
		(SELECT
			t5.USER_ID,
			t5.USER_NAME,
			t5.INVITE_USER_ID,
			t6.USER_NAME  AS INVITE_USER_NAME,
			t5.BID_AMOUNT,
			T5.operator_,
			T5.STATUS,
			t5.BID_STATUS,
TO_CHAR(T6.CREATE_TIME, 'yyyy-mm-dd hh24:mi:ss') CREATE_TIME,
			T5."ID"
				FROM
				(
					SELECT
					t3.USER_ID,
					T4.USER_NAME,
					t3.INVITE_USER_ID,
					t3.BID_AMOUNT,
					T3.operator_,
					t3.BID_STATUS,
					T3.STATUS,T3."ID"
						FROM
						(
							SELECT
							t1.USER_ID,
							t1.INVITE_USER_ID,
							t1.OPERATOR_,
							t2.BID_AMOUNT,
							t2.BID_STATUS,
							t1."ID",
							T1.STATUS
							FROM
							T_CUST_USER_INVITE t1
							LEFT JOIN T_LOAN_BID t2 ON t1.INVITE_USER_ID = t2.USER_ID
						) t3
					LEFT JOIN T_CUST_USER t4 ON t3.USER_ID = t4.ID
					) t5
		LEFT JOIN T_CUST_USER t6 ON t5.INVITE_USER_ID = t6. ID) t7
		WHERE 1=1)t8 LEFT JOIN T_USER_USER t9 ON t8.operator_=T9.id 
	 ]]>
		<isNotEmpty prepend="" property="searchContent">
			WHERE (T8.USER_NAME LIKE
			'%$searchContent$%'
			OR T8.INVITE_USER_NAME LIKE '%$searchContent$%' )
		</isNotEmpty>
		<![CDATA[
			ORDER BY t8.STATUS DESC,t8.CREATE_TIME DESC
		]]>


	</select>
</sqlMap>
             D层:                          

public class InviterDAO extends AbstractBaseDAO<CustomerUserInviteBean> {

	public InviterDAO(SqlMapClient sqlMap) {
		super(sqlMap);
	}

	//	对应xml中的命名空间
		@Override
		public String getNameSpace() {
			return "CustomerUserInvite";
		}
	//	对应数据表
		@Override
		public String getTableName() {
			return "T_CUST_USER_INVITE";
		}
	/**
		 * 查询全部-王丹
		 * 
		 * @param paramMap
		 * @return
		 * @throws Exception
		 */
public DataWrap pageQuery(Map paramMap) throws Exception {
		return (DataWrap) DataAccessor.query(getNameSpace()
				+ ".<strong>queryInviterList</strong>", paramMap, RS_TYPE.PAGED);
	}

}
           Service:            

/**
	 * 分页查询全部-王丹-2015年10月14日16:43:38
	 * 
	 * @param paramMap
	 * @return
	 * @throws Exception
	 */
	public DataWrap pagingQuery(Map inputMap) throws Exception {
		return new InviterDAO(null).pageQuery(inputMap);

	}
            controller这儿需要注意一下:

         我们不是直接去找controller,而是放到配置文件中,通过name去查,用的是struts:         

<!-- 邀请人管理 -->
	<service name="InviterService" class="com.voiinnov.puhuilicai.customer.controller.InviterController"></service>
            下面看下controller:            

public class InviterController extends AService {
	private static Logger logger = Logger.getLogger(InviterController.class);

	private InviterService inviterService = new InviterService();

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void listInviter(Context context) {

		List errorList = context.errList;
//		用于存放返回结果,并用json返回到界面
		Map outputMap = inviterService.outputMap;

		try {
			DataWrap dataWarp = this.inviterService
					.pagingQuery(context.contextMap);

			// 结果集
			outputMap.put("dw", dataWarp);
			outputMap.put("searchContent",
					context.contextMap.get("searchContent"));
		} catch (Exception e) {
			e.printStackTrace();
			errorList.add("系统错误,请联系系统管理员!");
			logger.error(this.getClass().getName() + ":", e);
			e.printStackTrace();
		}
		if (context.errList.isEmpty()) {
			Output.jspOutput(outputMap, context,
					"/puhuilicai/customer/InviterList.jsp");
		} else {
			outputMap.put("errList", context.errList);
			Output.jspOutput(outputMap, context, "/error.jsp");
		}

	}
              jsp中:              
<body οnlοad="setAction();">
	<form name="form1" id="form1"<strong> action="../servlet/defaultDispatcher"</strong>
		method="post">
		<input name="__action" value="<strong>InviterService.listInviter</strong>"
			type="hidden" /> <input name="statusShow" value="${statusShow }"
			type="hidden" />

		<!--头部开始-->
		<div id="fixedLayer">
			<div class="main">
				<div class="main_c main_bg">
					<div class="main_nav">
						<div class="nav_pic">
							<a href="javascript:void(0)" title="新增" οnclick="initInviter()"><img
								src="${ctx }/commons/images/system/table_create1.gif" /></a> 
							<a href="javascript:void(0);" title="导出" οnclick="exportInviter()">
								<img src="../commons/images/system/ta_download1.jpg"></a>
							<ul style="float: right; margin-right: 5px; text-align: left;">
								<li><a href="javascript:void(0)" title="启用"
									οnclick="updateStatus(0)">  启  用</a></li>
								<li><a href="javascript:void(0)" title="停用"
									οnclick="updateStatus(-2)">  禁  用</a></li>
							</ul>

						</div>
					</div>
				</div>
			</div>
		</div>
		<!--头部结束-->
		<!-模糊查询开始-->
		<div class="margintop40"></div>
		<div class="main">
			<div class="main_c main_bg">
				<!--自适应宽度 -start-->
				<div class="table_scroll">
					<table width="100%" border="0" cellspacing="0" cellpadding="0">
						<tr>
							<td align="center" valign="top">
								<table width="100%" border="0" align="center" cellpadding="0"
									cellspacing="0" class="">
									<tr align="center" valign="middle">
										<td height="35" align="left" valign="middle"
											class="table_title_td_bg">
											<div style="float: left; line-height: 30px;">
												<span class=" margin_left10 font_white"><strong></strong></span>
											</div> <%@ include file="/commons/pageControl.jsp"%>

											<!-- 搜索和排序 -start-->
											<div style="float: right; line-height: 30px; width: 450px;">
												<div class="tsearch-panel-fields" style="margin-top: 6px;">
													<label for="searchContent">邀请人,被邀请人</label> <input
														name="searchContent" id="searchContent" type="text"
														class="span3" value="${searchContent }" />
												</div>
												<input type="image" οnclick="doSearch();"
													src="${ctx }/commons/images/system/btn_search.png"
													style="width: 50px; height: 23px; margin-top: 6px; margin-left: 5px;" />

											</div> <!-- 搜索和排序 -end-->
									</tr>
								</table>
							</td>
						</tr>
					</table>
				</div>
<!-- 				查询表格 -->
				<table width="100%" border="1" align="center" cellpadding="0"
					cellspacing="0" class="table_style table2">
					<tr>
						<th style="text-align: center;" class="table_th_bg">序号
						</td>
						<th style="text-align: center;" class="table_th_bg">邀请人</th>
						<th style="text-align: center;" class="table_th_bg">被邀请人</th>
						<th style="text-align: center;" class="table_th_bg">注册时间</th>
						<th style="text-align: center;" class="table_th_bg">操作员</th>
						<th style="text-align: center;" class="table_th_bg">投资金额</th>
						<th style="text-align: center;" class="table_th_bg">投资状态</th>
						<th style="text-align: center;" class="table_th_bg">状态</th>

					</tr>
<!-- 					遍历查询结果 -->
					<c:forEach items="${dw.rs }" var="lists" varStatus="status">
						<tr id="${lists.ID}" USER_ID="${lists.USER_ID}"
							οnclick="changeTrColor(this);" style="cursor: pointer;"
							<c:if test="${status.count % 2 == 0 }">bgcolor="#F5F5F5"</c:if>>
							<td style="text-align: center;">${status.count + dw.pageSize * (dw.currentPage - 1)}</td>
							<td height="24">${lists.USER_NAME}</td>
							<td height="24">${lists.INVITE_USER_NAME}</td>
							<td height="26px" >${lists.CREATE_TIME}</td>
							<td height="24">${lists.NAME}</td>
							<td height="24">
								
								<c:choose>
									<c:when test="${empty lists.BID_AMOUNT }">
										0
									</c:when>
									
									<c:otherwise>
									${lists.BID_AMOUNT}
									</c:otherwise>
								</c:choose>
							</td>
							<td height="24">
								<c:choose>
									<c:when test="${lists.BID_STATUS eq -1}">
										待付款
									</c:when>
									<c:when test="${lists.BID_STATUS eq 1}">
										投资中
									</c:when>
									<c:when test="${lists.BID_STATUS eq 2}">
										还款中
									</c:when>
									<c:when test="${lists.BID_STATUS eq 5}">
										债权转让
									</c:when>
									<c:when test="${empty lists.BID_STATUS }">
										未投资
									</c:when>
									<c:otherwise>
										未知
									</c:otherwise>
								</c:choose>
							</td>
							<td>
								<c:choose>
									<c:when test="${lists.STATUS eq 0}">
										启用
									</c:when>
									<c:otherwise>
										禁用
									</c:otherwise>
								</c:choose>
							</td>
						
						</tr>
					</c:forEach>
				</table>
				<%@ include file="/commons/pageControlBottom.jsp"%>
			</div>
		</div>
		<!--内容结束-->
		<div class="space"></div>
	</form>
</body>
             下面是出来的效果:

            


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值