




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
jfinal框架教程-学习笔记上一节介绍了jfinal框架的简单搭建,这节通过一个小例子了解jfinal的结构和特点先上图1、建数据库(我用的是oracle数据库,其他的相对也差不多)- Create tablecreate table CLASSES( classesid NUMBER not null, classesname VARCHAR2(20), classesaddress VARCHAR2(50);- Create tablecreate table STUDENT( studentid NUMBER not null, studentname VARCHAR2(10), studentage NUMBER, studentsex VARCHAR2(2), classesid NUMBER);alter table STUDENT add constraint FK_CLASSESID foreign key (CLASSESID) references CLASSES (CLASSESID);新建项目,我用的myeclipse,先把jar包导入2、实体类Classes.javapackage com.demo.model;import com.jfinal.plugin.activerecord.Model;public class Classes extends Model public static final Classes dao = new Classes();Student.javapackage com.demo.model;import com.jfinal.plugin.activerecord.Model;public class Student extends Model public static final Student dao = new Student(); public Classes getClasses() return Classes.dao.findById(get(classesid);/表的属性 什么这是实体类?没错! ActiveRecord 是 jfinal 最核心的组成部分之一,通过 ActiveRecord 来操作数据库,将极大地减少代码量,极大地提升开发效率,配置在后面,我这里用的是Model,Model 是 ActiveRecord 中最重要的组件之一,它充当 MVC 模式中的 Model部分。以上代码中的 User 通过继承 Model,便立即拥有的众多方便的操作数据库的方法。在 User 中声明的 dao 静态对象是为了方便查询操作而定义的,该对象并不是必须的。基于ActiveRecord 的 Model 无需定义属性, 无需定义 getter、 setter方法,无需 XML 配置,无需 Annotation 配置,极大降低了代码量。Model常见方法见官方API。JFinal还有 独创 Db + Record 模式,Db 类及其配套的 Record 类, 提供了在 Model 类之外更为丰富的数据库操作功能。使用 Db 与 Record 类时,无需对数据库表进行映射,Record 相当于一个通用的 Model。Db常见方法见官方API。3、DemoConfig.javapackage com.demo.config;import com.demo.controller.ClassesController;import com.demo.controller.StudentController;import com.demo.model.Classes;import com.demo.model.Student;import com.jfinal.config.Constants;import com.jfinal.config.Handlers;import com.jfinal.config.Interceptors;import com.jfinal.config.JFinalConfig;import com.jfinal.config.Plugins;import com.jfinal.config.Routes;import com.jfinal.plugin.activerecord.ActiveRecordPlugin;import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;import com.jfinal.plugin.activerecord.dialect.OracleDialect;import com.jfinal.plugin.c3p0.C3p0Plugin;public class DemoConfig extends JFinalConfig Override public void configConstant(Constants me) Override public void configHandler(Handlers me) / TODO Auto-generated method stub Override public void configInterceptor(Interceptors me) / TODO Auto-generated method stub Override public void configPlugin(Plugins me) C3p0Plugin cp = new C3p0Plugin(jdbc:oracle:thin:localhost:1521:orcl, test, test); / 配置Oracle驱动 cp.setDriverClass(oracle.jdbc.driver.OracleDriver); me.add(cp); ActiveRecordPlugin arp = new ActiveRecordPlugin(cp); me.add(arp); / 配置Oracle方言 arp.setDialect(new OracleDialect(); / 配置属性名(字段名)大小写不敏感容器工厂 arp.setContainerFactory(new CaseInsensitiveContainerFactory(); arp.addMapping(student, studentid, Student.class); arp.addMapping(classes, classesid, Classes.class); /参数表:表名,主键,类 Override /路由,输入工程名加路径进入的文件,。class文件是。java文件编辑后生产的文件。 public void configRoute(Routes me) me.add(/, StudentController.class); me.add(/student, StudentController.class); me.add(/classes, ClassesController.class); 我这里是oracle数据库的配置,oracle有些特别的地方,如表列名会自动转成大写,配置个免大小写的工厂,方便开发等。这里要注意url,驱动,方言,在给个mysql数据库的配置对比下public class DemoConfig extends JFinalConfig public void configPlugin(Plugins me) C3p0Plugin cp = new C3p0Plugin(jdbc:mysql:/localhost/db_name, userName, password);me.add(cp);ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);me.add(arp);arp.addMapping(user, User.class);arp.addMapping(article, article_id, Article.class); 4、StudentController.javapackage com.demo.controller;import java.util.List;import erceptor.StudentInterceptor;import com.demo.model.Student;import com.demo.validator.StudentValidator;import com.jfinal.aop.Before;import com.jfinal.core.Controller;public class StudentController extends Controller Before(StudentInterceptor.class) public void index() /把查询结果集放入student中 List list = Student.dao.find(select * from student);/调用数据库 /把list的结果集放入studentList,传入下一个界面 setAttr(studentList, list); render(/index.html);/跳转界面 public void add() render(/add.html); public void delete() / 获取表单域名为studentID的值 / Student.dao.deleteById(getPara(studentID); / 获取url请求中第一个值 Student.dao.deleteById(getParaToInt(); forwardAction(/student); public void update() /Student.class 。java文件生产的 Student student = getModel(Student.class); student.update(); forwardAction(/student); public void get() Student student = Student.dao.findById(getParaToInt(); setAttr(student, student); render(/index2.html); Before(StudentValidator.class) public void save() Student student = getModel(Student.class); student.set(studentid, mysequence.nextval).save(); forwardAction(/student); 获取studentid那里有多种方法,这个要和前台传参写法一致,Controller 提供了 getPara 系列方法,官网api里很详细jfinal用的是原生态sql语句,简单,方便,setAttr(studentList, list);把结果集放到request范围里,jfinal也有直接获取表单里分装成对象的方法 getModel(Student.class);就是,和struts2一样,表单name对应上就可以了,非常方便添加那里对于oracle用序列维护studentidstudent.set(studentid, mysequence.nextval).save();jfinal有多种返回方式,也可以返回json数据,render 系列方法,官网api里很详细5、interceptor和validator(可以不加)StudentInterceptor.javapackage erceptor;import com.jfinal.aop.Interceptor;import com.jfinal.core.ActionInvocation;public class StudentInterceptor implements Interceptor public void intercept(ActionInvocation ai) System.out.println(Before action invoking); ai.invoke();/请求,调用 System.out.println(After action invoking); StudentValidator.javapackage com.demo.validator;import com.jfinal.core.Controller;import com.jfinal.validate.Validator;public class StudentValidator extends Validator /在校验失败时才会调用 Override prote
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实训室教育培训
- 福建省福州市鼓楼区延安中学2026届英语九年级第一学期期末考试试题含解析
- 印刷企业岗前培训
- 社区保密文件培训
- 湖南长沙市长郡教育集团2026届英语九上期末质量跟踪监视试题含解析
- 2026届四川省重点中学化学九上期末联考试题含解析
- 江苏省常熟市第一中学2026届九年级化学第一学期期中达标检测试题含解析
- 安徽省安庆市太湖县2026届英语九年级第一学期期末达标测试试题含解析
- 2026届吉林省重点中学九年级化学第一学期期中检测试题含解析
- 金融分析师考试题库及答案解析
- 智慧审计数字化场景DeepSeek+AI智算一体机设计方案
- 机械清扫队管理制度
- 第16课《田忌赛马》课件
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 普洱茶考试题及答案
- 节目演出安全协议书
- 酒店物件赔偿协议书
- 职业技能考评员培训课件
- 基于视觉的增强现实虚实注册技术:原理、挑战与突破
- 护士职业暴露与防护 课件
- 2025年第十届“学宪法、讲宪法”竞赛题库(含答案)
评论
0/150
提交评论