今天比较懒了,也没有写多少,在之前写好的基础上加了一点点。
具体代码如下:
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