demo下载地址:
http://note.youdao.com/noteshare?id=bed3a7acfabaaf574a226901ec703867
/** * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中, * 并要对数据进正确性进行验证,在此仅为了偷懒 */ @Before(BlogValidator.class) public void save() { getBean(Blog.class).save();//此方法不安全,请参考 update方法 redirect("/blog"); } /** * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中, * 并要对数据进正确性进行验证,在此仅为了偷懒 */ @Before(BlogValidator.class) public void update() { //注: 在Blog表新增money字段类型为number并且可为空 //原实例方法 //getBean(Blog.class).update(); //redirect("/blog"); Blog blog=null; //一,新方法 Bean方式 blog = getBean(Blog.class);// 原方法 不安全 //// 方案一:保留法 blog=getBean(Blog.class,new String[]{"id","title","content"}); //// 方案二:排除法 // blog=getBean(Blog.class, ModelFilterType.REFUSE, "Money"); //// 方案三:过滤器 //String acceptStrs = ",id,title,content,", //只接受字段 // refuseStrs = ",content,money,";//拒绝接受字段 // blog=getBean(Blog.class, new ModelFilter(){ // @Override // public boolean accept(String paraName) { // return acceptStrs.contains(","+paraName+",");//可以使用正则表达式 // } // @Override // public boolean refuse(String paraName) { // return refuseStrs.contains(","+paraName+",");//可以使用正则表达式 // } // }); //二,新方法 Model方式 //blog = getModel(Blog.class);// 原方法 不安全 //// 方案一:保留法 // blog=getModel(Blog.class,new String[]{"id","title","content"}); //// 方案二:排除法 // blog=getModel(Blog.class, ModelFilterType.REFUSE, "Money"); //// 方案三:过滤器 //String acceptStrs = ",id,title,content,", //只接受字段 // refuseStrs = ",content,money,";//拒绝接受字段 // blog=getModel(Blog.class, new ModelFilter(){ // @Override // public boolean accept(String paraName) { // return acceptStrs.contains(","+paraName+",");//可以使用正则表达式 // } // @Override // public boolean refuse(String paraName) { // return refuseStrs.contains(","+paraName+",");//可以使用正则表达式 // } // }); blog.update(); redirect("/blog"); }
注解方式启动项目
/** * 配置路由 */ public void configRoute(Routes me) { //me.add("/", IndexController.class, "/index"); // 第三个参数为该Controller的视图存放路径 //me.add("/blog", BlogController.class); // 第三个参数省略时默认与第一个参数值相同,在此即为 "/blog" //-----------alotuser--------------// JRoutes jme=new JRoutes(me); jme.adds("com.demo");//@方式一, 加载指定包下控制类 //me.scan("", JType.SECOND, "com.demo");//方式二,区分级别 } /** * 配置插件 */ public void configPlugin(Plugins me) { // 配置 druid 数据库连接池插件 DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim()); me.add(druidPlugin); //---------alotuser-配置ActiveRecord插件----------------------------------------------// JActiveRecordPlugin arp = new JActiveRecordPlugin(druidPlugin); arp.setDialect(new OracleDialect());//设置数据库方言 arp.setContainerFactory(new CaseInsensitiveContainerFactory());//忽略大小写 arp.setShowSql(true); // 所有映射在 MappingKit 中自动化搞定 //_MappingKit.mapping(arp); //------------alotuser-----------------// arp.addMapping("com.demo");//@加载指定包下实体类 me.add(arp); }