`
zgw06629
  • 浏览: 30481 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

反面教材

 
阅读更多
/**
	 * 说明     :  获取最近登陆账户信息
	 * @param  :   1. List ls, 
	 * 			   
	 * @return :   Accountinfo
	 */
    @TransactionAttribute(TransactionAttributeType.MANDATORY)
	public Accountinfo getRecentAccount(List<String> ls)
	{
		...
    	      Accountinfo accountinfo = (Accountinfo)query.getSingleResult();
	      return accountinfo;
	}
 

 

评点: 不够简洁且高并发情况下,还可能会发生“张冠李戴”的情况。
  可优化为:
return (Accountinfo)query.getSingleResult();
 
public  List<AccountDTO>  queryAccounts(String accountNo,
			String chanelCode, String registTimeStart,String registTimeEnd, String status,  List<String> lsAccountInfoId,
			String merchantName,String radiocode,int startRow,int endRow){

......
}
 评点: 参数过多,可用AccountDTO来代替。可能需要在该DTO增加几个属性来对应页面表单参数,如起始时间,结束时间及多选checkbox状态等。如下图:
账单商户查询


/**
	 * 说明     :  账户账号密码登陆验证
	 * @param  :   1. Long accountInfoId, 
	 * 			   2. int status 
	 * @return :   long  
	 */
	@TransactionAttribute(TransactionAttributeType.MANDATORY)
	public long loginValidate(String accountNo, String loginPwd,String chanel)
	{
		long returnValue=1; //失败
		
	//查询该帐户编号是否存在	
        String sql = "select count(*) from useraccnum u,accountinfo t where t.ACCOUNTSTATE!=4 and u.accountinfoid = t.accountinfoid  and u.useraccount=? and u.channelinfoid=?"; 
    	Query query = em.createNativeQuery(sql);
    	query.setParameter(1, accountNo);
    	query.setParameter(2, chanel);
    	
    	BigDecimal b = (BigDecimal)query.getSingleResult();
    	
    	//----如果验证成功则取得账户编号
    	if(null!=b&&1==b.intValue())
    	{
    		//取得账户ID
                sql = "select u.accountinfoid from useraccnum u where u.useraccount=?  and u.channelinfoid=?";
    		query = em.createNativeQuery(sql);
        	query.setParameter(1, accountNo);
        	query.setParameter(2, chanel);
    		b = (BigDecimal)query.getSingleResult();
    		returnValue = b.longValue(); //账户流水
    		
    		//验证密码
    		sql = "select loginpwd from useraccnum u,accountinfo t where t.ACCOUNTSTATE!=4 and u.accountinfoid = t.accountinfoid  and u.useraccount=? and u.channelinfoid=?";
        	Query querymm = em.createNativeQuery(sql);
        	querymm.setParameter(1, accountNo);
        	querymm.setParameter(2, chanel);
        	String dPwd = (String)querymm.getSingleResult();
        	//验证不通过
        	//if(!PasswordUtil.validate(dPwd, loginPwd))
        	if(!dPwd.equals(loginPwd))
        	{
        		return -returnValue;
        	}
        	
    		//-----更新登陆时间
    		sql = "update useraccnum t set t.recentlandtime=sysdate where  t.useraccount=?  and t.channelinfoid=?" ;
    		query = em.createNativeQuery(sql);
        	query.setParameter(1, accountNo);
        	query.setParameter(2, chanel);
    		query.executeUpdate();
    	}
    	
    	return returnValue;
	
	}
 
评点:该方法用于账户登录时的校验。功能过于复杂、凌乱。先是查询记录数,若为1,则再查询主键ID,接着查询其密码(以上三步可查询一次便可解决),校验密码是否匹配,更新登录时间。且返回值也让人眼花缭乱,账户不存在返回1,账户存在密码错误则为主键ID的负值,若校验通过则为主键ID。
优化:功能单一化,仅校验登录信息。登录日志(登陆成功、登录失败)另外处理。返回值为boolean,即告知校验通过还是未通过。

 
/**
	 * 1. 根据账户ID进行账户锁定
	 * 
	 * @param 1.
	 *            账户ID Long accountInfoId 2. 锁定方式 int lockType 0:自动锁定;1:手工锁定;
	 * @return OutObj4Account
	 * @exception
	 */
	public OutObj4Account lockAccount(Long accountInfoId, int lockType) {
		OutObj4Account outObj4Account = new OutObj4Account();
		try {
			ut.begin();
			if (null != accountInfoId) {
				if (0 == lockType) {
					accountDAO.updateStatusById(accountInfoId, 0);
				}
				if (1 == lockType) {
					accountDAO.updateStatusById(accountInfoId, 1);

				}
				outObj4Account.setIsSuccess("0");
				outObj4Account.setMsg("操作成功");
			......
	}
 
评点: 多此一举。
优化:
accountDAO.updateStatusById(accountInfoId, lockType)
 
/**
	 * 1. 根据账户ID进行账户解锁
	 * 
	 * @param 1.
	 *            账户ID Long accountInfoId 2. 解锁方式 int unLockType 0:自动解锁;1:手工解锁;
	 * @return OutObj4Account
	 * @exception
	 */
	public OutObj4Account unlockAccount(Long accountInfoId, int unLockType


) {

		OutObj4Account outObj4Account = new OutObj4Account();

		// -------------------------------------------------------
		try {
			ut.begin();
			if (null != accountInfoId) {
				accountDAO.updateStatusById(accountInfoId, 3);
				outObj4Account.setIsSuccess("0");
				outObj4Account.setMsg("账户解锁操作成功");
			} else {
				......
			}
			......
	}
 
评点: unLockType参数多余。且校验accountInfoId亦属画蛇添足。很明显在该操作前你已明确知道该主键ID。


  • 大小: 7.1 KB
分享到:
评论

相关推荐

    警示教育片观后感:反面教材的魅力精选.doc

    这篇文档的标题是"警示教育片观后感:反面教材的魅力精选.doc",描述是对一部警示教育片的个人观后感,标签为"资料"。主要内容是作者通过观看中煤集团反腐倡廉警示教育片《堕落与忏悔》后的思考,强调了反面教材在...

    angular js 可做反面教材

    然而,正如标题“angular js 可做反面教材”所提示的,尽管AngularJS有着显著的优点,但也存在一些问题和挑战,这些不足之处可以成为我们在学习和使用过程中汲取教训的例子。 首先,AngularJS的学习曲线较为陡峭。...

    2020初中地理 人民币背面教学参考资料.doc

    2020初中地理 人民币背面教学参考资料.doc

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    高效Java编程 经典的国外教材

    四、案例分析:正反面教材的启示 《高效Java编程》一书不仅提供正面的编程示例,还包含了一些应避免的“反模式”。这些“反模式”被明确标注为“Never do this!”,旨在帮助读者识别和改正可能引入的错误或低效的...

    无内鬼,来点ICML_ACL审稿人笑话.pdf

    文章的主要内容可以分为两部分:第一部分是作者对审稿人的吐槽和讽刺,包括审稿人的各种类型,如反面教材型、意外型、总结型等。第二部分是作者对机器学习领域的思考和建议,包括如何改进大型会议的审稿模式和基于...

    面试小技巧:如何用简洁正面的介绍抵消反面的问题.docx

    然而,也有一些反面教材值得借鉴。彭嘉的例子提醒我们,求职者不能过于放松,缺乏紧迫感可能导致失去良机。他过于专注于眼前的事,忽视了求职的紧迫性,结果在激烈的竞争中落败。这反映出在当前就业市场,保持适当的...

    开编《贰臣传》的“创意”之举

    5. 反面教材的作用:《贰臣传》将变节者作为反面教材,旨在教育后世臣子应坚守气节,对当朝官员起到警示作用,促进忠君思想的传播。 6. 褒贬并举:乾隆皇帝同时编纂《胜朝殉节诸臣录》,表彰明朝忠臣,以对比强调对...

    工作保证书經典款式.docx

    6. **正面示范与反面教材**:员工的错误行为可以作为其他员工的反面教材,提醒大家引以为戒,同时,良好的改正行为也可以成为正面示范,促进整个团队的纪律性和责任感。 7. **领导的教导与帮助**:员工期望通过领导...

    71-2-0设计概念与原则1

    老塔科马大桥的失败是软件工程设计概念与原则的反面教材。老塔科马大桥的设计人员没有遵循软件工程的设计概念与原则,导致桥梁的设计结构崭新而没有经过验证,最后导致桥梁被风“吹”断。这个案例告诉我们,软件工程...

    ORACLEBS库存智能预测与分析.docx

    反面教材是一般它是结合现物和柏拉图的表示,就是让现场的作业人员明白,也知道他的不良的现象及后果。提醒板是用于防止遗漏,健忘是人的本性,不可能杜绝,只有通过一些自主管理的方法来最大限度地尽量减少遗漏或...

    C++编写的学生成绩管理系统

    《C++编写的学生成绩管理系统:从反面教材中汲取经验》 在软件开发领域,我们经常通过分析和学习失败案例来提升自己的编程技能。本文将以“C++编写的学生成绩管理系统”为例,探讨其中可能存在的问题,并从中提炼出...

    2009年高考零分作文选登.doc

    文档标签为"范文",这通常意味着这些作文虽然被评为零分,但也可以作为反面教材,供学生参考和学习,避免犯同样的错误。 【知识点详解】 1. **高考作文评分标准**:高考作文评分通常基于内容、结构、语言和创新四...

    云南省2016届中考语文说明文阅读题含解析

    恐龙的灭绝被用作反面教材,说明大型生物在管理和生存上的挑战。综上所述,168厘米被认为是人类的理想身高,因为这样的身高可以保持生理功能的高效运作,减少不必要的能量消耗,有助于健康和长寿。

    四年级中队主题队会学法知法与法同行.pdf

    小品《今日说法—面对诱惑》生动呈现了知法犯法的反面教材,强调了学法、知法、守法的重要性。最后,全班进行宣誓,承诺做遵纪守法的小公民,并在辅导员的领呼下进行呼号,活动在退队旗的仪式中落下帷幕。 此次活动...

    读白雪公主《格林童话》有感.docx

    - **反面教材**:继母王后的行为则成为了一个反面教材,展示了嫉妒和恶意所带来的后果。 #### 2.2 善待他人 - **人际关系**:故事启示我们,如果以真诚友好的态度对待他人,就能获得别人的尊重和喜爱,进而建立良好...

    西藏拉萨2019届高三语文上学期第三次月考试题.doc

    例如,北京前门大街的改造就是一个反面教材,改造后未能达到预期效果,反而失去了原有的魅力。 4. 对待传统街区的正确态度应该是谨慎和持续的维护与更新,而不是追求速效的改造。应避免盲目复古,而应保护街区的...

    2007年全国2高考满分作文选登:关于帮助(二).doc

    同时,文章提到了马加爵事件,作为反面教材,说明缺乏感恩之心可能导致的悲剧后果。此外,陈健、荆轲和袁隆平的事迹进一步强化了感恩的价值。 文章结尾部分,作者呼吁人们怀抱感恩之心,将爱传递,认为感恩可以带来...

    独立学院《计算机数据处理》课程的教学探索与实践.docx

    4. 使用反面教材:避免仅传授成功案例,引入错误或不完善的实例,让学生从中找出问题,这有助于培养学生的批判性思维和独立解决问题的能力。通过挑错和讨论,学生能更深入理解理论知识,增强知识的实际应用意识。 5...

    小学生作文扩写楚王好细腰.docx

    【知识点】 1. 故事背景:故事源自古代楚国,具体是春秋...10. 教育启示:对于教育领域,这个故事可以作为反面教材,教育孩子们不要盲目追随时尚,要重视内在品质和能力的培养,同时强调领导者的责任和决策的重要性。

Global site tag (gtag.js) - Google Analytics