
xin.xihc.jba.demo.BaseDao Maven / Gradle / Ivy
package xin.xihc.jba.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import xin.xihc.jba.core.JbaTemplate;
import xin.xihc.jba.core.PageInfo;
import java.lang.reflect.ParameterizedType;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 最顶级Dao层,只需继承即可完成基础操作,抽象类
*
* @author Leo.Xi
* @version 1.0
* @date 2018/9/25 12:53
* @since 1.0
*/
public class BaseDao {
/** 数据库操作Template */
@Autowired
@Qualifier("jbaTemplate")
protected JbaTemplate jbaTemplate;
/** 日志记录器 */
protected Logger logger = LoggerFactory.getLogger(this.getClass());
/** T -> Class */
protected Class tClass;
public BaseDao() {
this.tClass = getTClass();
}
/**
* 获取泛型T的Class
*
* @return Class
*/
@SuppressWarnings("unchecked")
private Class getTClass() {
return (Class) (((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
}
/**
* 添加操作
*
* @param record 插入的数据
* @return 是否插入成功(true-成功)
*/
public boolean add(T record) {
Objects.requireNonNull(record, "record is null");
return jbaTemplate.insertModel(record);
}
/**
* 批量添加,每50个插入一次
*
* @param records 插入到数据数组
*/
public void batchAdd(T[] records) {
Objects.requireNonNull(records, "records is null");
if (records.length < 1) {
return;
}
List temp = new LinkedList<>();
for (T record : records) {
temp.add(record);
if (temp.size() >= 50) {
jbaTemplate.insertModels(temp.toArray());
temp.clear();
}
}
if (temp.size() > 0) {
jbaTemplate.insertModels(temp.toArray());
}
temp.clear();
temp = null;
}
/**
* 更新操作
*
* @param record 更新内容
* @return 是否更新成功(true-成功)
*/
public boolean updateById(T record) {
Objects.requireNonNull(record, "record is null");
Objects.requireNonNull(record.getId(), "no id");
return jbaTemplate.updateModel(record, "id");
}
/**
* 批量执行sql
*
* @param sql sql语句
* @param params 参数
*/
public void batchUpdate(final String sql, Map[] params) {
jbaTemplate.batchUpdate(sql, params);
}
/**
* 根据ID单个查询
*
* @param id ID
* @return tClass
*/
public T findById(final String id) {
return findById(id, this.tClass);
}
/**
* 根据ID单个查询,返回制定类型
*
* @param id ID
* @param clazz 响应类型
* @return clazz
*/
public E findById(final String id, Class clazz) {
if (id == null) {
return null;
}
try {
T t = this.tClass.newInstance();
t.setId(id);
return jbaTemplate.queryModelOne(t, clazz);
} catch (Exception e) {
logger.error("findById():", e);
}
return null;
}
/**
* 根据ID删除
*
* @param id ID
* @return 是否删除成功(true-成功)
*/
public boolean deleteById(final String id) {
if (id == null) {
return false;
}
T t = null;
try {
t = this.tClass.newInstance();
t.setId(id);
return delete(t);
} catch (Exception e) {
logger.error("deleteById():", e);
}
return false;
}
/**
* 根据对象删除
*
* @param record 删除条件
* @return 是否删除成功(true-成功)
*/
public boolean delete(T record) {
return jbaTemplate.deleteModel(record);
}
/**
* 分页查询
*
* @param pageInfo 分页信息
* @param record 查询条件
* @param orderBy 排序(属性名或表列名)
* @return List
*/
public List page(T record, PageInfo pageInfo, String... orderBy) {
Objects.requireNonNull(record, "record is null");
if (orderBy.length < 1) {
orderBy = new String[1];
orderBy[0] = "create_time DESC";
}
return jbaTemplate.queryModelList(record, this.tClass, pageInfo, orderBy);
}
/**
* 分页查询
*
* @param pageInfo 分页信息
* @param clazz 响应对象类型
* @param record 查询条件
* @param orderBy 排序(属性名或表列名)
* @return List
*/
public List page(T record, Class clazz, PageInfo pageInfo, String... orderBy) {
Objects.requireNonNull(record, "record is null");
if (orderBy.length < 1) {
orderBy = new String[1];
orderBy[0] = "create_time DESC";
}
return jbaTemplate.queryModelList(record, clazz, pageInfo, orderBy);
}
/**
* 查询数量
*
* @param record 条件对象
* @return 数量
*/
public int count(T record) {
Objects.requireNonNull(record, "record is null");
return jbaTemplate.queryCount(record);
}
/**
* 查询是否存在
*
* @param record 表对象
* @return true - 存在;false - 不存在
*/
public boolean exists(T record) {
Objects.requireNonNull(record, "record is null");
return count(record) > 0;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy