- 浏览: 203081 次
- 性别:
- 来自: 北京
最新评论
-
毛毛虫小白:
您好,这里说的基于角色标注就是用到了字体位频率表里,在“名字内 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词 -
assasszt:
请问 能不能加入写入文件功能,不然的话 是每次 执行 都是一个 ...
Java版本的BloomFilter (布隆过滤器) -
lhj_6270:
楼主不错。果然不是一般人。再接再厉弄个软件出来。
Java版本的BloomFilter (布隆过滤器) -
ansjsun:
fncj 写道你好,我们最近要搞一个人名识别功能,发现有两个问 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词 -
fncj:
你好,我们最近要搞一个人名识别功能,发现有两个问题:1、里有不 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
前几天看了Nutz的框架写的真不错.方便..既有springMVC的优雅.也有Hibernate的简洁
但是在查询的时候.没有封装类似springside的页面查询.于是闲着趁礼拜六日自己写了个通用的action..写的时候一直很迷茫.我是不是又回到jsp时代了..暂且作为一个分支吧...
具体的可行性..待定.希望大家给点意见
首先是个通用的action 他返回的是json格式..
下面是使用的简介
他依赖一下两个工具类..和apache的jar包..beanUtil..当然不想用jar包就把beanUtil实现一下我是美意见的..我比较懒就用她的jar了
我的重点是action不是 dao
但是在查询的时候.没有封装类似springside的页面查询.于是闲着趁礼拜六日自己写了个通用的action..写的时候一直很迷茫.我是不是又回到jsp时代了..暂且作为一个分支吧...
具体的可行性..待定.希望大家给点意见
首先是个通用的action 他返回的是json格式..
下面是使用的简介
查询说明: /superjson/list/Person?page.pageNo=1&Cnd_AND_age_GT=20&Cnd_AND_name_LIKE=ansj 这个意思就是.查找Person对象.pageNo=1:从第一页 Cnd_AND_age_GT=20 年龄大于20 Cnd_OR_name_LIKE=ansj 或者名字like ansj 目前支持EQ, GT, LT, GTE, LTE, N, LIKE, NLIKE, IS, ISN, IN, NIN , ASC, DESC ; 查询单一对象 /superjson/findOne/Person?Cnd_AND_id_EQ=1 这个意思就是.查找Person对象. Cnd_AND_id_EQ=1 id=1的对象.可以有其他条件但是只 返回第一个对象 保存 /superjson/save/Person/person?person.name=ansj&person.age=20 这个意思就是插入Person对象.person对象的参数前缀是ansj. 这样就构造一个person对象并且保存 更新 /superjson/update/Person/person?person.name=ansj&person.age=20&person.id=1 这个意思就是更新Person对象.person对象的参数前缀是ansj. 这样就构造一个person对象并且更新 删除 /superjson/delete/Person/person?Cnd_AND_id_EQ=1*Cnd_OR_name_LIKE=ansj 删除一批对象.这个条件是id=1 或者name like ansj
package com.enilu.shop.controller; import java.lang.reflect.InvocationTargetException; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.nutz.dao.Condition; import org.nutz.ioc.annotation.InjectName; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.json.Json; import org.nutz.json.JsonFormat; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import com.enilu.shop.util.InjectByClass; import com.enilu.shop.util.Page; import com.enilu.shop.util.PageSqlUtil; /** * 通用的JSON返回JSON的字符串格式 * @author ansj * @mail ansj-sun@163.com */ @IocBean @InjectName public class SuperJSONAction extends BaseAction { static final String BEANPATH = "com.enilu.shop.bean."; /** * 通用的查找action 构建网址必须按照此格式/superjson/list/类名?page.pageSize=10... * 注意.pageNo=0的时候就是查询全部 * * @param className * 要查询的对象名 * @param page * 查询的也没信息 * @return json * @throws ClassNotFoundException * 传入的类名称不正确 * @throws InterruptedException */ @SuppressWarnings("unchecked") @At("/superjson/list/*") @Ok("json") public Object list(String className, @Param("::page.") Page page, HttpServletRequest request) throws ClassNotFoundException, InterruptedException { Condition condition = PageSqlUtil.getCnd(request); Class c = Class.forName(BEANPATH + className); List list = this.basicDao.searchByPage(c, condition, page.getPageNo(), page.getPageSize()); int allCount = basicDao.searchCount(c); page.setResult(list); page.setTotalCount(allCount); return page; } /** * 通用的查找action 构建网址必须按照此格式/superjson/list/类名?page.pageSize=10... * 注意.pageNo=0的时候就是查询全部 * * @param className * 要查询的对象名 * @param page * 查询的也没信息 * @return json * @throws ClassNotFoundException * 传入的类名称不正确 * @throws InterruptedException */ @SuppressWarnings("unchecked") @At("/superjson/findOne/*") @Ok("json") public Object findOne(String className, HttpServletRequest request) throws ClassNotFoundException, InterruptedException { StringBuilder sb = new StringBuilder() ; Condition condition = PageSqlUtil.getCnd(request); Class c = Class.forName(BEANPATH + className); List list = this.basicDao.search(c, condition); if(list.size()>0){ return list.get(0) ; } return "ERROR" ; } /** * 保存 * 网址参数例子:/superjson/save/类名/对象名?对象名.参数=值 * @return 成功或者失败 * @throws ClassNotFoundException * @throws InvocationTargetException * @throws IllegalAccessException * @throws InstantiationException */ @SuppressWarnings("unchecked") @At("/superjson/save/?/?/*") @Ok("json") public String save(String className, String objName, HttpServletRequest request) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException { Class c = Class.forName(BEANPATH + className); Object obj = InjectByClass.getObject(c, objName, request); this.basicDao.save(obj); return "SUCCESS"; } /** * 保存 * 网址参数例子:/superjson/update/类名/对象名?对象名.参数=值 * @return 成功或者失败 * @throws ClassNotFoundException * @throws InvocationTargetException * @throws IllegalAccessException * @throws InstantiationException */ @SuppressWarnings("unchecked") @At("/superjson/update/?/?/*") @Ok("json") public String update(String className, String objName, HttpServletRequest request) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException { Class c = Class.forName(BEANPATH + className); Object obj = InjectByClass.getObject(c, objName, request); this.basicDao.update(obj); return "SUCCESS"; } /** * 删除 * 网址参数例子:/superjson/delete/类名?对象名.参数=值 * @return 成功或者失败 * @throws ClassNotFoundException * @throws InvocationTargetException * @throws IllegalAccessException * @throws InstantiationException */ @SuppressWarnings("unchecked") @At("/superjson/delete/*") @Ok("json") public String delete(String className, HttpServletRequest request) throws ClassNotFoundException, InterruptedException { Condition condition = PageSqlUtil.getCnd(request); Class c = Class.forName(BEANPATH + className); List list = this.basicDao.search(c, condition); basicDao.deleteAll(list) ; return "SUCCESS"; } }
他依赖一下两个工具类..和apache的jar包..beanUtil..当然不想用jar包就把beanUtil实现一下我是美意见的..我比较懒就用她的jar了
package com.enilu.shop.util; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.nutz.dao.Cnd; import org.nutz.dao.Condition; import org.nutz.dao.util.cri.SimpleCriteria; public class PageSqlUtil { /** * Cnd_OR_KEY_OP Cnd_DESC_KEY Cnd_ASC_KEY * * @param request * 网页发送过来的request * @return Cnd */ @SuppressWarnings("unchecked") public static Condition getCnd(HttpServletRequest request) { Map<String, Object> map = request.getParameterMap(); Iterator<Entry<String, Object>> it = map.entrySet().iterator(); Entry<String, Object> entity = null; String key = null; QuerySub querySub = new QuerySub(); String[] strs = null; while (it.hasNext()) { entity = it.next(); key = entity.getKey(); strs = key.split("_"); if ("Cnd".equals(strs[0])) { querySub.add(strs, entity.getValue()); } } return querySub.getCondition(); } /** * 查询串拼接 Cnd_OR_KEY_OP * * @author Ansj */ static class QuerySub { StringBuilder sb = new StringBuilder(" where 1=1 "); StringBuilder orderSb = new StringBuilder(); SimpleCriteria sc = new SimpleCriteria(); // Cnd_OR_KEY_OP public void add(String[] strs, Object obj) { MatchType mt = MatchType.valueOf(strs[strs.length-1]); Object value = null ; String op = null ; switch (mt) { case EQ: op = "=" ; break; case N: op = "<>" ; break; case IN: op = "IN" ; value = obj ; break ; case NIN: op = "NOT IN" ; value = obj ; break ; case GT: op = ">" ; break; case LT: op = "<" ; break; case GTE: op = ">=" ; break; case LTE: op = "<=" ; break; case LIKE: op = "LIKE" ; case NLIKE: op = "NOT LIKEs" ; case IS: op = "IS" ; break; case ISN: op = "IS NOT" ; break; case ASC: sc.getOrderBy().asc(strs[2]) ; break; case DESC: sc.getOrderBy().desc(strs[2]) ; break; } if(value==null){ value = ((Object[])obj)[0] ; if(StringUtils.isBlank(value.toString())){ return ; } } if(op!=null){ if("AND".equalsIgnoreCase(strs[1])){ sc.where().and(Cnd.exp(strs[2], op, value)) ; }else if("OR".equalsIgnoreCase(strs[1])){ sc.where().or(Cnd.exp(strs[2], op, value)) ; } } } public SimpleCriteria getCondition() { return sc ; } } /** * 比较类型 N开头表示not 默认的比较或者like对于字符串都是忽略大小写的 * */ enum MatchType { EQ, GT, LT, GTE, LTE, N, LIKE, NLIKE, IS, ISN, IN, NIN , ASC, DESC ; } }
package com.enilu.shop.util; import java.lang.reflect.InvocationTargetException; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; import org.apache.commons.beanutils.BeanUtils; public class InjectByClass { @SuppressWarnings("unchecked") public static Object getObject(Class c , String objName , HttpServletRequest request) throws InstantiationException, IllegalAccessException, InvocationTargetException{ Object obj = c.newInstance() ; objName = objName+"."; Map<String, Object> map = request.getParameterMap(); Iterator<Entry<String, Object>> it = map.entrySet().iterator(); Entry<String, Object> entity = null; String key = null; String[] strs = null; while (it.hasNext()) { entity = it.next(); key = entity.getKey(); if(key.startsWith(objName)){ strs = key.split("\\.") ; BeanUtils.setProperty(obj, strs[1], entity.getValue()) ; } } return obj ; } }
评论
3 楼
ansjsun
2012-01-04
lingsql 写道
看了,楼主有没有看nutz的dao,又重新自己写了一个,真是费劲啊。
我的重点是action不是 dao
2 楼
lingsql
2012-01-04
看了,楼主有没有看nutz的dao,又重新自己写了一个,真是费劲啊。
1 楼
j9dai
2011-12-19
好像条件的值都成了字符串型,最后拼出的条件都是col op 'value'。所以类似oracle date字段会报错
发表评论
-
elasticsearch 常用备忘
2013-10-23 13:56 1276关闭服务: curl -XPOST 'http://loc ... -
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
2012-09-14 13:35 7212大家好.最近在做分词.在分词中遇到了各种各样的问题 ... -
不停集群的情况下增删节点
2012-07-03 14:25 0http://coderplay.javaeye.com ... -
新浪微博采集利用javascript爬取
2012-02-16 16:17 85在一个群里有人问新浪微博的抓取. 因为需求特殊..试了一次通 ... -
元宵爬虫-YuanXiaoSpider
2012-02-06 12:25 4569翻译了下..没有元宵的淫文啊....所以用PinYing吧.. ... -
<<这就是搜索引擎>>学习笔记-算法之索引压缩
2012-01-19 16:20 2323前一段时间.在微博上中奖了. 一个叫张俊林的帅锅.送了俺一本书 ... -
mysql 备份还原命令
2011-01-12 09:39 1078备份MySQL数据库的命令 mysqldump -hhostn ... -
OpenOffice学习笔记二创建一个Openoffice文档
2010-09-21 14:39 3301好了代码如下.我不废话了 package ansj.sun.o ... -
OpenOffice学习笔记一连接OppenOffice
2010-09-21 11:22 6460其实网上已经有不少关于.Openoffice使用的文章的. ... -
Tomcat下内存和jni路径设置..留着记一下
2010-09-19 10:47 1692set JAVA_OPTS=-Xms512m -Xmx512m ... -
xfire 掉用.net服务端webservice SOAP错误
2010-04-13 10:05 1578SOAP Action 必须包含头..所以呀重写ObjectS ... -
javaFX 實現粗糙版的挖地雷
2009-08-17 13:30 1290首先..因為javafx剛開始接觸..不是很熟悉..既然他能調 ...
相关推荐
nutz-1.r.60.jar
Nutz是一个功能强大的Java开发框架,它以高效、简洁、灵活为设计原则,旨在简化Java开发者的工作流程。Nutz-1.r.62是该框架的一个版本,它包含了一系列优化和改进,使得开发者在构建应用程序时能更加得心应手。 在...
标题中的"nutz-1.r.61.r2.jar"是一个特定版本的Nutz框架的Java库文件。Nutz是一个开源的Java框架,它旨在简化Web开发,提供一系列实用工具和强大的支持,使得开发者能够更高效地进行业务逻辑处理。这个版本号"1.r.61...
nutz-1.r.62.jar 的jar包 可以解决中文乱码,设置字符编码等等
Nutz 是一个全面的Java开发框架,旨在提供高效、稳定且易于使用的工具和服务。"nutz-1.r.61-发布包"是Nutz框架的一个版本更新,具体为1.r.61版本。这个发布包包含了该版本的文档、源代码、编译后的类库以及相关的...
Nutz是一个轻量级、高性能的Java开源框架,它的核心目标是简化开发,提高效率。"nutz-1.r.58"是一个特定版本的Nutz框架发布包,包含了该框架的各种组件和文档,便于开发者在项目中使用和学习。 在提供的文件列表中...
nutz-1.b.43-jdk5.jar 资源包
Nutz框架可以在WEB-INF/lib下仅使用一个nutz.jar来运行一个Web应用,前提是开发者自行添加必要的jar包,如连接池和数据库驱动等。对于那些希望尝试新东西、愿意成为NutzCommitters的开发者,Nutz提供了相应的指南和...
Nutz是一个轻量级、高性能的Java开发框架,它的核心组件包括了ORM、AOP、MVC等,为开发者提供了一套完整的开发工具集。在Java开发领域,JDK版本的选择至关重要,因为不同版本的JDK可能会影响到代码的兼容性和性能。...
如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了 当然你要使用连接池,数据库驱动等功能,还需要自行添置 jar 包。 -------------Nutz 为谁而设计? 如果你觉得 Hibernate 控制比较繁琐,...
nutz-1.b.43-jdk5.jar 资源包
Nutz是对于Java程序员来说,除SSH之外的另一个选择。当然,它是开源的,并且是完全免费的。同时也是商业友好的(Licensed under the Apache License, Version 2.0)。
Nutz 是一个全面而强大的Java开发框架,由国内开发者团队创建,旨在简化企业级Web应用的开发过程。Nutz 框架集成了许多功能,包括MVC、ORM、DAO、JSON、AJAX、安全控制等,为Java程序员提供了一站式的解决方案。...
综上所述,Nutz框架是一个为Java Web开发而生的轻量级框架,它的设计考虑到了传统Java Web开发中的一些痛点,力求在保持运行时效率的前提下,通过简化配置和提供方便快捷的开发方式,提高开发者的生产力。...
同传统的 SSH 相比,它具备如下特点:轻 -- ...这就意味着:如果一个 Web 应用,你在 WEB-INF/lib 下只 需要放置一个 nutz.jar 就够了当然你要使用其它的连接池,数据库驱动,打印PDF支持等功能,还需要自行添置 jar 包
nutzboot1.65版jar包...............................................................................................希望对你有用
在IT行业中,数据库管理是核心任务之一,而高效地对数据库表进行CRUD(Create、Read、Update、Delete)...总之,Nutz是一个强大且灵活的工具,对于Java开发者来说,它能够简化数据库操作,使你更专注于业务逻辑的实现。
Nutz 是一个轻量级的Java框架,它提供了丰富的功能来支持数据库操作,包括视图的使用。视图在数据库设计中扮演着重要角色,允许开发者以简化的方式查询多个相关表的数据,而无需每次都进行复杂的联接操作。这篇博客...