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);
}