JFinal入门(五)JFinal的ORM

索瀚海
2023-12-01

前言

      本章讲解JFinal框架的ORM

方法

1.概念

我们知道,hibernate和mybatis等框架完美解决了后端的编码压力,那么作为急速开发框架的JFinal也不例外。他拥有全部的功能,当然包含ORM,这使得我们仅仅需要一个框架就能够开发项目。(以前都是三个框架整合的)

2.基础配置

在前面的例子中,或多或少的渗透了其连接数据库的配置:

public void configPlugin(Plugins me) {
    DruidPlugin dp = new DruidPlugin("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger");
    me.add(dp);
    ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
    me.add(arp);
    //配置数据库方言
    arp.setDialect(new OracleDialect());
    // 配置属性名(字段名)大小写不敏感容器工厂
    arp.setContainerFactory(new CaseInsensitiveContainerFactory());
    arp.addMapping("users", User.class);
}

实体类做如下配置即可:

package cn.edu.ccut.bo;

import com.jfinal.plugin.activerecord.Model;

public class User extends Model<User> {
    public static final User dao = new User().dao();
}

3.ActiveRecord

1)概念

ActiveRecord 是 JFinal 最核心的组成部分之一,通过 ActiveRecord 来操作数据库,将极大地减少代码量,极大地提升开发效率。

我认为它的亮点就是在实体类的配置上:

基于ActiveRecord的Model无需定义属性,无需定义getter、setter方法,无需XML配置,无需Annotation配置,极大降低了代码量。

常见的CRUD方法:

// 创建name属性为James,age属性为25的User对象并添加到数据库
new User().set("name", "James").set("age", 25).save();
 
// 删除id值为25的User
User.dao.deleteById(25);
 
// 查询id值为25的User将其name属性改为James并更新到数据库
User.dao.findById(25).set("name", "James").update();
 
// 查询id值为25的user, 且仅仅取name与age两个字段的值
User user = User.dao.findByIdLoadColumns(25, "name, age");
 
// 获取user的name属性
String userName = user.getStr("name");
 
// 获取user的age属性
Integer userAge = user.getInt("age");
 
// 查询所有年龄大于18岁的user
List<User> users = User.dao.find("select * from user where age>18");
 
// 分页查询年龄大于18的user,当前页号为1,每页10个user
Page<User> userPage = User.dao.paginate(1, 10, "select *", "from user where age > ?", 18);

特别注意:User中定义的 public static final User dao对象是全局共享的,只能用于数据库查询,不能用于数据承载对象。数据承载需要使用new User().set(…)来实现。

2)查询操作

示例:查询一个姓名为admin的User对象

//查询
public void find(){
    User user = User.dao.findFirst(" select * from users where username='admin' ");
    System.out.println(user);
    setAttr("user",user);
    //返回页面
    render("/hello.jsp");
}

我认为,其它的操作大家自主去探索就ok了!

 类似资料: