文档章节

jfinal抽象model方法

一个yuanbeth
 一个yuanbeth
发布于 2017/08/26 23:15
字数 407
阅读 25
收藏 0

关于jfinal一些增删该查的方法,其实我们还可以根据具体实际需要继续抽象封装下。以下借鉴同事的方法,这个抽象后,Model生成器需改造,同事已改改造,我还没看懂,先理解大体思路。

1、目前jfinal使用生成器根据数据库表生成了其对应的Model和BaseModel,BaseModel 中拥有 getter、 setter 方法,不需要人工维护,数据表有任何变动一键重新生成即可。Model只包含了该表的一个线程安全的实例对象。

2、这里可以根据具体情况继续抽象Model的一些公共方法到一个基类中,这个类继承Model。如:

public abstract class BaseModel<M extends BaseModel<M>> extends Model<M>
{
    private static final long serialVersionUID = 1L;

    /**
     * 新增
     * @param has
     * @return
     */
    public boolean save(boolean has)
    {
        String[] keyName = (String[])TableMapping.me().getTable(getClass()).getPrimaryKey();
        if (get(keyName[0]) == null)
        {
            set(keyName[0], IdKit.uuid());
        }
        if (has)
        {
            set("created_on", DateKit.getNow());
            set("created_by", ShiroMethod.principal());
        }
        return super.save();
    }

    /**
     * 修改
     * @param has
     * @return
     */
    public boolean update(boolean has)
    {
        if (has)
        {
            set("modified_on", DateKit.getNow());
            set("modified_by", ShiroMethod.principal());
        }
        return super.update();
    }

    /**
     * 新增或修改
     * @param has
     * @return
     */
    public boolean saveOrUpdate(boolean has)
    {
        String[] keyName = (String[])TableMapping.me().getTable(getClass()).getPrimaryKey();
        if (get(keyName[0]) == null)
        {
            return save(has);
        }
        else
        {
            return update(has);
        }
    }

    /**
     * 默认没有四大字段,新增
     * @return
     */
    public boolean save()
    {
        return save(false);
    }

    /**
     * 默认没有四大字段,修改
     * @return
     */
    public boolean update()
    {
        return update(false);
    }

    /**
     * 默认没有四大字段,新增或修改
     * @return
     */
    public boolean saveOrUpdate()
    {
        return saveOrUpdate(false);
    }
}

3、然后每个Model的基类再继承上面这个类,如:public abstract class BaseUser<M extends BaseUser<M>> extends BaseModel<M> implements IBean ,这样所有Model都拥有了基本的操作,不用每个Model都写一遍这样的基本操作方法。

© 著作权归作者所有

一个yuanbeth
粉丝 98
博文 134
码字总数 79514
作品 0
深圳
程序员
私信 提问
JFinal的Model类的二次继承方法

我想要扩展以下JFinal的Model的功能,先继承这个基类为BaseModel,然后所有的POJO都继承这个BaseModel,这样就很方便扩展在Model中的功能,又不改变Model的代码,方便扩展自己的功能。 查看了...

Jetmark
2013/05/12
763
3
JFinal 2.1 发布,用 JFinal 开发,就这么定了!

JFinal 2.1 将带给大家超过60项增强与改进,此次升级核心目的,一是全面解救传统SSH开发者,强力推动这些早已累成狗的工程师转投 JFinal 怀抱,二是与老用户建立更深的情感,答谢你们长久以来...

JFinal
2015/12/29
26.3K
354
jfinal与sql server兼容问题

@JFinal 你好,想跟你请教个问题: 项目中所有表的主键根据业务需求有一套固定的生成方式,所以我建了一个自己的model继承自jfinal的model,然后所有model继承自我自己写的model,但是运行后...

T0NYLEE
2015/03/03
1K
2
JFinal针对ORACLE的timestamp字段解决办法

JFinal是个比较不错的的框架,但JFinal起源时使用mysql数据库,因此在对数据库支持方面还没有达到完美。 本人使用JFinal有一段时间的,由于项目的数据库普遍采用oracle,在使用oracle过程中遇...

真的农夫三拳
2013/06/23
1K
6
OSC上关于Jfinal的提问整理(二)

1.【问】:Db.tx(new IAtom())事务不起作用? 【jfinal答】:1:如果使用的mysql,确保引擎为 InnoDB 2:这行代码改一下Db.save(c3p0Plugin.getDataSource(), "tbtest", "PKID", record);去掉......

木川瓦兹
2013/04/25
2.5K
2

没有更多内容

加载失败,请刷新页面

加载更多

数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
35分钟前
6
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
45分钟前
5
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0
8086汇编基础 start 程序入口标签的示例

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
今天
4
0
uni app 零基础小白到项目实战2

<template> <scroll-view v-for="(card, index) in list" :key="index"> <view v-for =(item, itemIndex) in card"> {{item.value}}</view> </scroll-view></template> GraceUi va......

达达前端小酒馆
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部