刚刚同时跑来问我一个sql语句顿时,一看我有点蒙,因为之前没有用过,所以在这里写下学习笔记加深印象。语法如下:

此sql语句我认为有点像条件语句。意思是:

条件一,当字段value的值等于”compare-value”时,赋值为result01;

条件二,当字段value的值等于”compare-value”时,赋值为result02;

条件N,,赋值为result02;    结束
这么说肯定感觉很抽象,上实例,一看就明白了。
usersa表及数据如下图

样例1查询SQL

查询结果图

样例2查询SQL

查询结果图

 

【参考资料】
http://www.jb51.net/article/28222.htm

@Parameters:用于JUnit的参数化功能,用来标记准备数据的方法。
注意:该方法需要满足一定的要求:
(1)该方法必须为public static的
(2)该方法返回值必须为java.util.Collection类型
(3)该方法的名字不做要求
(4)该方法没有参数

 

在实际项目中,随着项目进度的开展,单元测试类会越来越多,可是直到现在我们还只会一个一个的单独运行测试类,这在实际项目实践中肯定是不可行的。为了解决这个问题,JUnit 提供了一种批量运行测试类的方法,叫做测试套件(TestSuite)。这样,每次需要验证系统功能正确性时,只执行一个或几个测试套件便可以了。
一种是类似Junit3的方法:

Junit3中是直接testSuite.addTest(Test1.class),Junit4中需要用JUnit4TestAdapter来转换一下。TestSuite中也可以添加TestSuite,方法是一样的,即testSuite.addTest(new JUnit4TestAdapter(TestDemo01.class));

另一种是使用标注的方法:
创建一个空类作为测试套件的入口。 使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuiteClasses 修饰这个空类。将 org.junit.runners.Suite 作为参数传入注解 RunWith,以提示 JUnit 为此类使用套件运行器执行。
将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数。 保证这个空类使用 public 修饰,而且存在公开的不带有任何参数的构造函数。

 

1、assertTrue/False([String message,]boolean condition);
用来查看变量是是否为false或true,如果assertFalse()查看的变量的值是false则测试成功,如果是true则失败,assertTrue()与之相反;

2、fail([String message,]);
直接用来抛出错误。

3、assertEquals([String message,]Object expected,Object actual);
判断是否相等,可以指定输出错误信息。
第一个参数是期望值,第二个参数是实际的值。
这个方法对各个变量有多种实现

4、assertNotNull/Null([String message,]Object obj);
判读一个对象是否非空(非空)。

5、assertSame/NotSame([String message,]Object expected,Object actual);
判断两个对象是否指向同一个对象。看内存地址。

6、failNotSame/failNotEquals(String message, Object expected, Object actual)
当不指向同一个内存地址或者不相等的时候,输出错误信息。
注意信息是必须的,而且这个输出是格式化过的。

1.@Before:
表示该方法在每个测试方法执行前执行一次,可用于一些初始工作。
 
2.@BeforeClass:
该方法在所有测试方法运行前运行,且只运行一次,添加该注释的方法必须修饰为 public static void 且没有参数。
 
3.@Test : 表示测试方法。
        注意:    
              1.测试方法必须使用注解 org.junit.Test 修饰。
                2.测试方法必须使用 public void 修饰,而且不能带有任何参数。
该方法有两个属性:
  a: expected :该属性表示测试方法必须抛出一个异常,且异常的类型必须是该属性要求的类型,否则表示测试方法失败。也叫做异常测试。
  例如:@Test(expected=IndexOutOfBoundsException.class)
  b:timeout 用于超时测试,表示该测试方法的执行时间如果超过了要求的时间则失败 单位为毫秒
  例如:@Test(timeout=100)
 
4.@Ignore :
表示会被忽略的测试方法
 
5.@After :
被注释的方法会在每个测试方法执行完成之后执行一次,如果其它的方法抛出了异常,该方法同样会被执行。主要用于释放在@Before方法中初始化的资源。
 
6.@AfterClass:
功能同@After ,只不过是该方法释放的是@BeforeClass方法初始化的资源。且在所有的测试方法执行完成之后,只执行一次。
 
7.@Runwith:
测试运行器,放在测试类名之前,用来确定测试类怎么运行的,当不指定这个注解时,使用默认Runner来运行测试代码,即@RunWith(JUnit4.class)。常见的运行器有:
(1)@RunWith(Parameterized.class):参数化运行器,配合@Parameters使用JUnit的参数化功能。
(2)@RunWith(Suite.class)
 @SuiteClasses({ATest.class,BTest.class,CTest.class})
测试集运行器配合使用测试集功能。   
(3)@RunWith(JUnit4.class):JUnit 4的默认运行器
(4)@RunWith(JUnit38ClassRunner.class):用于兼容junit3.8的运行器

8.@Parameters:
用于JUnit的参数化功能,用来标记准备数据的方法。
 
一个JUnit 4 的单元测试用例执行顺序为:
@BeforeClass –> @Before –> @Test  –> @After  –> @AfterClass

在一次开发中我需要从Hibernate查询返回List对象中(注:这个list对象并非一个完整的model类,而是多表查询拼凑的一些字段),取出部分数据在做一次筛选操作。但list只是一个接口类,并没有具体指明什么类型,所以我们不能轻松的获取到每个list中对象。

于是使用debug模式,我想查看一下这返回的list具体是什么类生成的。通过下图我们可以明显的看出这个list使用对象数组类new出来的。

知道具体的生成类型,我们就可以单独取出每个list中的对象,并根据对象中一些属性的值进行其他判断操作。

如下是简单的实例代码:

【Ps补充一个技巧】

对于list中的removed操作,List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。在网上搜了一下大概有三种方法解决这个问题。

1.倒过来遍历list(个人比较喜欢这种)

 

2.每移除一个元素以后再把i移回来

 

3.使用iterator.remove()方法删除

常用的js正则校验表达式,一为加深自己记忆,二供大家参考。

  • 正则非法字符串校验var charCheck = /[“~!@#%&*`’]/;
  • 正则整数校验var integerCheck = /^[1-9]*[1-9][0-9]*$/   //chenxiang
  • 正则url地址校验var urlCheck = /(http[s]?|ftp)://[^/.]+?..+w$/i;
  • 正则email地址校验var emailCheck = /w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/

【ps 其他blog几个写的不错的js】
js  车牌号校验http://www.blogjava.net/weiwei/articles/401703.htmljs

身份证校验http://www.cnblogs.com/shenliang123/archive/2012/04/05/2432880.html

最近在学习致远的OA系统,发现系统中使用了一些有趣的window.open属性。其中的一些参数很有意思,之前没有注意过,找了一篇文章,写的不错,引用一下,加深印象。
winodw.open(url, name, features, replace)
参数属性:

  •  url: 一个可选的字符串,声明了要在新窗口中显示的文档的 URL。如果省略了这个参数,或者它的值是空字符串,那么新窗口就不会显示任何文档。
  • name:一个可选的字符串,该字符串是一个由逗号分隔的特征列表,其中包括数字、字母和下划线,该字符声明了新窗口的名称。这个名称可以用作标记 <a> 和 <form> 的属性 target 的值。如果该参数指定了一个已经存在的窗口,那么 open() 方法就不再创建一个新窗口,而只是返回对指定窗口的引用。在这种情况下,features 将被忽略。
  • features: 一个可选的字符串,声明了新窗口要显示的标准浏览器的特征。如果省略该参数,新窗口将具有所有标准特征。在窗口特征这个表格中,我们对该字符串的格式进行了详细的说明。
  • replace: 一个可选的布尔值。规定了装载到窗口的 URL 是在窗口的浏览历史中创建一个新条目,还是替换浏览历史中的当前条目。支持下面的值:
    •true – URL 替换浏览历史中的当前条目。
    •false – URL 在浏览历史中创建新的条目。

    引自:http://blog.csdn.net/vastskyjoe/article/details/4122104