JFinal model簡單包裝,版本1

今天比较懒了,也没有写多少,在之前写好的基础上加了一点点。

具体代码如下:

package net.zz.zjf.plugin;
import com.jfinal.plugin.activerecord.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by ZaoSheng on 2015/7/15.
*/
public class Model<M extends com.jfinal.plugin.activerecord.Model> extends com.jfinal.plugin.activerecord.Model<M> {

/**
* @param params
* @param isPage
* @return
*/
public Page<M> queryPageUseSQL(QueryParams params, boolean isPage){
String sqlExceptSelect = params.toSqlExceptSelect(getTableName() , "t");
if (isPage){
return paginate(params.getPageIndex(), params.getPageSize(), "SELECT * ", sqlExceptSelect, params.getParas().toArray());
}
long totalRow = 0L;
List result = Db.query( "SELECT COUNT(*) " + DbKit.replaceFormatSqlOrderBy(sqlExceptSelect), params.getParas().toArray());
int size = result.size();
if(size == 1) {
totalRow = ((Number)result.get(0)).longValue();
} else {
if(size <= 1) {
return new Page(new ArrayList(0), 1, 10, 0, 0);
}
totalRow = (long)result.size();
}
List list = find(String.format("SELECT * ", sqlExceptSelect.toString()), params.getParas().toArray());
return new Page(list, 1, (int) totalRow, 1, (int)totalRow);
}

/**
* @param params 查询参数
* @return List
*/
public List<M> findByProperty(QueryParams params) {
String sqlExceptSelect = params.toSqlExceptSelect(getTableName() , "t");
return find(String.format("SELECT * ", sqlExceptSelect.toString()), params.getParas().toArray());
}

/**
* 通过orm实体属性名称查询全部
*
* @param propertyName orm实体属性名称
* @param value 值
* @return List
*/
public List<M> findByProperty(String propertyName, Object value) {
return findByProperty(propertyName, value, Restriction.EQ);
}

/**
* 通过orm实体属性名称查询全部
*
* @param propertyName orm实体属性名称
* @param value 值
* @return M
*/
public M findFirst(String propertyName, Object value) {
List<M> result = findByProperty(propertyName, value, Restriction.EQ);
return result.size() > 0?result.get(0):null;
}

/**
* 通过orm实体属性名称查询全部
*
* @param propertyName orm实体属性名称
* @param value 值
* @return List
*/
public List<M> findByProperty(String propertyName, Object value, Restriction restriction) {
String sql = "SELECT * FROM %s WHERE %s %s";
return find(String.format(sql, getTableName(), propertyName, restriction.toMatchString("?")), value);
}

/**
* 通过orm实体属性名称查询全部
*
* @param propertyName orm实体属性名称
* @param value 值
* @return M
*/
public M findFirst(String propertyName, Object value, Restriction restriction) {
List<M> result = findByProperty(propertyName, value, restriction);
return result.size() > 0?result.get(0):null;
}

public M findFirst(QueryParams params) {
String hsql = " FROM " + getTableName() + " t " + params.toWhereSQL("t");
M value = this.findFirst(String.format("SELECT * %s", params.toFormatSQL(hsql)) , params.getParas().toArray());
return value;
}
public boolean saveAll(List<M> ms) {
return false;
}
private Table getTable() {
return TableMapping.me().getTable(this.getClass());
}
protected String getTableName() {
return getTable().getName();
}
protected String getPrimaryKey() {
return getTable().getPrimaryKey();
}
protected String getSecondaryKey() {
return getTable().getSecondaryKey();
}
protected Config getConfig() {
return DbKit.getConfig(this.getClass());
}
}

差不多就是这样子吧,本人小菜一枚,表达能力也不是很好。请大神们见谅。初学者还有很多要学的,请大神多指教。

测试的demo我就不写了,等全部写好之后再用zjf写一个小例子

继续对JFinal的Model部分包装一下,github地址:https://github.com/cnzzs/zjf

本文出自 “7031393” 博客,请务必保留此出处http://7041393.blog.51cto.com/7031393/1681083

更多相关文章
  • 对JFianl的Model 部分进一步的扩展,对QueryParams增加一个方法.今天增加的东西也不是很多.这几天有点懒了吧. 接下来就直接开始讲吧. public Long countSqlResult(String sqlExceptSelect, Object... params) { Li ...
  • 最近项目上了AngularJS,而原来使用的日期控件的使用方式也需要改变,于是开始了倒腾,看了官方的例子,可以使用AngularJS的directive做简单的处理,这样在html里直接使用申明的的形式即可使用了. <!doctype html> <html ng-app=&quo ...
  • 原文地址:http://www.linuxidc.com/Linux/2014-03/99055.htm 我们用MapReduce进行数据分析.当业务比较复杂的时候,使用MapReduce将会是一个很复杂的事情,比如你需要对数据进行很多预处理或转换,以便能够适应MapReduce的处理模式,另一方面 ...
  • 思路: 先由 Jsmooth把jar和相关资源打包生成exe,再由Inno把exe和资源文件打成安装包     一  Jsmooth     1 下载 安装 Jsmooth   地址:jsmooth.sourcefo
  • NoSQL初探之人人都愛Redis:(1)Redis簡介與簡單安裝
    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题: (1)对数据库高并发读写的需求 网站要根据用户个性化信息来
  • Lustre是一个大规模的.安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的. 该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统. 因为业务需要
  • 1,安装puppet注意:客户端和服务器版本尽量保持一致,如果不能一致,客户端的version也不能太旧,服务端的version不能低于client端 安装及简单配置步骤: 安装准备(server&client端适用): 首先,要更改计算机名:hostname puppet.nn.local ...
  • 


    		    PHP5.2.3+apache2.2.4的最簡單安裝方法
    最近为了安装PHP+apache这个PHP开发环境,到处查找资料,网上众说纷纭,我试了好多
一周排行