删除只做删除标记 该如何改呢@wizzer
package cn.wizzer.common.base;
import cn.wizzer.common.page.DataTableColumn;
import cn.wizzer.common.page.DataTableOrder;
import cn.wizzer.common.page.OffsetPager;
import cn.wizzer.common.page.Pagination;
import org.apache.commons.lang.math.NumberUtils;
import org.nutz.dao.*;
import org.nutz.dao.entity.Record;
import org.nutz.dao.pager.Pager;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.sql.SqlCallback;
import org.nutz.dao.util.Daos;
import org.nutz.json.Json;
import org.nutz.json.JsonFormat;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.util.NutMap;
import org.nutz.service.EntityService;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by wizzer on 2016/6/21.
*/
public class Service<T> extends EntityService<T> {
protected final static int DEFAULT_PAGE_NUMBER = 10;
protected final static JsonFormat jsonFormat = new JsonFormat().setIgnoreNull(false);
public Service() {
super();
}
public Service(Dao dao) {
super(dao);
}
public int count(String tableName, Condition cnd) {
return this.dao().count(tableName, cnd);
}
public T fetch(long id) {
return this.dao().fetch(this.getEntityClass(), id);
}
public T fetch(String name) {
return this.dao().fetch(this.getEntityClass(), name);
}
public int delete(String name) {
return this.dao().delete(this.getEntityClass(), name);
}
public T fetchLinks(T t, String name) {
return this.dao().fetchLinks(t, name);
}
public T insert(T t) {
return this.dao().insert(t);
}
public void insert(String tableName, Chain chain) {
this.dao().insert(tableName, chain);
}
public T fastInsert(T t) {
return this.dao().fastInsert(t);
}
public int update(Object obj) {
return this.dao().update(obj);
}
/**
* 忽略值为null的字段
*
* @param obj
* @return
*/
public int updateIgnoreNull(Object obj) {
return this.dao().updateIgnoreNull(obj);
}
public T fetchLinks(T t, String name, Condition cnd) {
return this.dao().fetchLinks(t, name, cnd);
}
public int delete(long id) {
return this.dao().delete(this.getEntityClass(), id);
}
public int delete(int id) {
return this.dao().delete(this.getEntityClass(), id);
}
public int getMaxId() {
return this.dao().getMaxId(this.getEntityClass());
}
/**
* 批量删除
*
* @param ids
*/
public void delete(Integer[] ids) {
this.dao().clear(getEntityClass(), Cnd.where("id", "in", ids));
}
/**
* 批量删除
*
* @param ids
*/
public void delete(Long[] ids) {
this.dao().clear(getEntityClass(), Cnd.where("id", "in", ids));
}
/**
* 批量删除
*
* @param ids
*/
public void delete(String[] ids) {
this.dao().clear(getEntityClass(), Cnd.where("id", "in", ids));
}
/**
* 通过LONG主键获取部分字段值
*
* @param fieldName
* @param id
* @return
*/
public T getField(String fieldName, long id) {
return Daos.ext(this.dao(), FieldFilter.create(getEntityClass(), fieldName))
.fetch(getEntityClass(), id);
}
/**
* 通过INT主键获取部分字段值
*
* @param fieldName
* @param id
* @return
*/
public T getField(String fieldName, int id) {
return Daos.ext(this.dao(), FieldFilter.create(getEntityClass(), fieldName))
.fetch(getEntityClass(), id);
}
/**
* 通过NAME主键获取部分字段值
*
* @param fieldName 支持通配符 ^(a|b)$
* @param name
* @return
*/
public T getField(String fieldName, String name) {
return Daos.ext(this.dao(), FieldFilter.create(getEntityClass(), fieldName))
.fetch(getEntityClass(), name);
}
/**
* 通过NAME主键获取部分字段值
*
* @param fieldName 支持通配符 ^(a|b)$
* @param cnd
* @return
*/
public T getField(String fieldName, Condition cnd) {
return Daos.ext(this.dao(), FieldFilter.create(getEntityClass(), fieldName))
.fetch(getEntityClass(), cnd);
}
/**
* 查询获取部分字段
*
* @param fieldName 支持通配符 ^(a|b)$
* @param cnd
* @return
*/
public List<T> query(String fieldName, Condition cnd) {
return Daos.ext(this.dao(), FieldFilter.create(getEntityClass(), fieldName))
.query(getEntityClass(), cnd);
}
/**
* 计算子节点ID
*
* @param tableName
* @param cloName
* @param value
* @param <T>
* @return
*/
public <T> String getSubPath(String tableName, String cloName, String value) {
final String val = Strings.sNull(value);
Sql sql = Sqls.create("select " + cloName + " from " + tableName
+ " where " + cloName + " like '" + val + "____' order by "
+ cloName + " desc");
sql.setCallback(new SqlCallback() {
public Object invoke(Connection conn, ResultSet rs, Sql sql)
throws SQLException {
String rsvalue = val + "0001";
if (rs != null && rs.next()) {
rsvalue = rs.getString(1);
int newvalue = NumberUtils.toInt(rsvalue
.substring(rsvalue.length() - 4)) + 1;
rsvalue = rsvalue.substring(0, rsvalue.length() - 4)
+ new java.text.DecimalFormat("0000")
.format(newvalue);
}
return rsvalue;
}
});
this.dao().execute(sql);
return sql.getString();
}
/**
* 自定义SQL统计
*
* @param sql
* @return
*/
public int count(Sql sql) {
sql.setCallback(new SqlCallback() {
public Object invoke(Connection conn, ResultSet rs, Sql sql)
throws SQLException {
int rsvalue = 0;
if (rs != null && rs.next()) {
rsvalue = rs.getInt(1);
}
return rsvalue;
}
});
this.dao().execute(sql);
return sql.getInt();
}
/**
* 自定义SQL返回Record记录集,Record是个MAP但不区分大小写
* 别返回Map对象,因为MySql和Oracle中字段名有大小写之分
*
* @param sql
* @param <T>
* @return
*/
public <T> List<Record> list(Sql sql) {
sql.setCallback(Sqls.callback.records());
this.dao().execute(sql);
return sql.getList(Record.class);
}
/**
* 分页查询
*
* @param pageNumber
* @param cnd
* @return
*/
public Pagination listPage(Integer pageNumber, Condition cnd) {
return listPage(pageNumber, DEFAULT_PAGE_NUMBER, cnd);
}
/**
* 分页查询
*
* @param pageNumber
* @param sql
* @return
*/
public Pagination listPage(Integer pageNumber, Sql sql) {
return listPage(pageNumber, DEFAULT_PAGE_NUMBER, sql);
}
/**
* 分页查询
*
* @param pageNumber
* @param tableName
* @param cnd
* @return
*/
public Pagination listPage(Integer pageNumber, String tableName, Condition cnd) {
return listPage(pageNumber, DEFAULT_PAGE_NUMBER, tableName, cnd);
}
/**
* 分页查询(cnd)
*
* @param pageNumber
* @param pageSize
* @param cnd
* @return
*/
public Pagination listPage(Integer pageNumber, int pageSize, Condition cnd) {
pageNumber = getPageNumber(pageNumber);
pageSize = getPageSize(pageSize);
Pager pager = this.dao().createPager(pageNumber, pageSize);
List<T> list = this.dao().query(getEntityClass(), cnd, pager);
pager.setRecordCount(this.dao().count(getEntityClass(), cnd));
return new Pagination(pageNumber, pageSize, pager.getRecordCount(), list);
}
/**
* 分页查询,获取部分字段(cnd)
*
* @param pageNumber
* @param pageSize
* @param cnd
* @param fieldName 支持通配符 ^(a|b)$
* @return
*/
public Pagination listPage(Integer pageNumber, int pageSize, Condition cnd, String fieldName) {
pageNumber = getPageNumber(pageNumber);
pageSize = getPageSize(pageSize);
Pager pager = this.dao().createPager(pageNumber, pageSize);
List<T> list = Daos.ext(this.dao(), FieldFilter.create(getEntityClass(), fieldName)).query(getEntityClass(), cnd);
pager.setRecordCount(this.dao().count(getEntityClass(), cnd));
return new Pagination(pageNumber, pageSize, pager.getRecordCount(), list);
}
/**
* 分页查询(tabelName)
*
* @param pageNumber
* @param pageSize
* @param tableName
* @param cnd
* @return
*/
public Pagination listPage(Integer pageNumber, int pageSize, String tableName, Condition cnd) {
pageNumber = getPageNumber(pageNumber);
pageSize = getPageSize(pageSize);
Pager pager = this.dao().createPager(pageNumber, pageSize);
List<Record> list = this.dao().query(tableName, cnd, pager);
pager.setRecordCount(this.dao().count(tableName, cnd));
return new Pagination(pageNumber, pageSize, pager.getRecordCount(), list);
}
/**
* 分页查询(sql)
*
* @param pageNumber
* @param pageSize
* @param sql
* @return
*/
public Pagination listPage(Integer pageNumber, int pageSize, Sql sql) {
pageNumber = getPageNumber(pageNumber);
pageSize = getPageSize(pageSize);
Pager pager = this.dao().createPager(pageNumber, pageSize);
pager.setRecordCount((int) Daos.queryCount(this.dao(), sql.toString()));// 记录数需手动设置
sql.setPager(pager);
sql.setCallback(Sqls.callback.records());
dao().execute(sql);
return new Pagination(pageNumber, pageSize, pager.getRecordCount(), sql.getList(Record.class));
}
/**
* 默认页码
*
* @param pageNumber
* @return
*/
protected int getPageNumber(Integer pageNumber) {
return Lang.isEmpty(pageNumber) ? 1 : pageNumber;
}
/**
* 默认页大小
*
* @param pageSize
* @return
*/
protected int getPageSize(int pageSize) {
return pageSize == 0 ? DEFAULT_PAGE_NUMBER : pageSize;
}
/**
* DataTable Page
*
* @param length 页大小
* @param start start
* @param draw draw
* @param orders 排序
* @param columns 字段
* @param cnd 查询条件
* @param linkname 关联查询
* @return
*/
public NutMap data(int length, int start, int draw, List<DataTableOrder> orders, List<DataTableColumn> columns, Cnd cnd, String linkname) {
NutMap re = new NutMap();
if (orders != null && orders.size() > 0) {
for (DataTableOrder order : orders) {
DataTableColumn col = columns.get(order.getColumn());
cnd.orderBy(Sqls.escapeSqlFieldValue(col.getData()).toString(), order.getDir());
}
}
Pager pager = new OffsetPager(start, length);
re.put("recordsFiltered", this.dao().count(getEntityClass(), cnd));
List<?> list = this.dao().query(getEntityClass(), cnd, pager);
if (!Strings.isBlank(linkname)) {
this.dao().fetchLinks(list, linkname);
}
re.put("data", list);
re.put("draw", draw);
re.put("recordsTotal", length);
return re;
}
/**
* DataTable Page SQL
*
* @param length 页大小
* @param start start
* @param draw draw
* @param countSql 查询条件
* @param orderSql 排序语句
* @return
*/
public NutMap data(int length, int start, int draw, Sql countSql, Sql orderSql) {
NutMap re = new NutMap();
Pager pager = new OffsetPager(start, length);
pager.setRecordCount((int) Daos.queryCount(this.dao(), countSql.toString()));// 记录数需手动设置
orderSql.setPager(pager);
orderSql.setCallback(Sqls.callback.records());
this.dao().execute(orderSql);
re.put("recordsFiltered", pager.getRecordCount());
re.put("data", orderSql.getList(Record.class));
re.put("draw", draw);
re.put("recordsTotal", length);
return re;
}
}