[转载]Groovy简洁开发,我用到的简洁之处 – 几番思念 – 博客园.
最近一直在用Groovy开发以前的项目,一边学习一边开发,工具用的是IDEA(欲哭 无泪,不熟悉真是搞死人)…….由于我做的是服务层,是为公司其它项目做服务支撑的,所以就没有用框架,只有一些servlet与dao,下面写 下我体会到的groovy的好处。
1、def
def定义无类型的变量,我的理解就是根据你所赋值的进行自动转换。其实这点个人感觉对于用惯了java语言的我来说并没有多大的方便。在这里面我还走过误区,如下:
1
2
3
4
5
6
7
8
9
|
def stateStr = request.getParameter( "state" ) //state传1 def state= 0 state = stateStr if (state== 1 ){ println "1" } if ( "1" .equals(state)){ println "2" } |
其实这个最后打印出来的是“2”,原先我写的是上面那个if,还以为def等自动匹配,看来没这么智能
2、是否为空判断
1
2
3
4
5
6
7
8
9
10
11
12
|
def stateStr = request.getParameter( "state" ) if (stateStr){ println "stateStr不为空" } else { println "stateStr为空" } //当然也可以用! if (!stateStr){ println "stateStr为空" } |
这个确实方便
3、json、xml解析
1
2
3
4
|
def root = new JsonSlurper().parseText(allStr) println "======root.access_token======" +root.access_token codeToAccessToken = root.access_token codeToOpenid = root.openid |
这个模块里面一个服务是微信消息服务,微信服务器给我返回的json格式字符串allStr,一句话就可以解析这个json,xml类似
4、SQL
1
2
3
4
5
6
7
8
9
10
11
|
void insertAccessToken( def access_token){ def create_time = new Date() println db.execute( "insert into access_token(access_token,create_time) values(${access_token},${new Date()})" ) } def getAccessToken(){ Sql db = new Sql(Commons.getDatasource()) def row = db.firstRow( "select * from access_token order by id desc" )<br> println row.id row } |
这就是groovy.sql的一部分用法,其中在String中用${}也是很爽的
5、循环、遍历
1
2
3
4
5
6
7
|
data. eachWithIndex {it,i -> if (i== 0 ){ dataBuff. append ( "{name:'${it.get(" trans_name ")}',y: ${it.get(" trans_amount ")},sliced: true,selected: true}," ) } else { dataBuff. append ( "['${it.get(" trans_name ")}',${it.get(" trans_amount ")}]," ) } } |
1
2
3
4
5
|
for(i in 1 .. 15 ){ nowCl.add(Calendar.DAY_OF_MONTH, 1 ) year = nowCl. get (Calendar.YEAR) list.add( "${year}-${month}-${day}" ) } |
还有each等,总的来说确实简便了许多
刚接触groovy,以后要学习的地方还有很多,不断记录,不断积累,不断进步