
org.javaz.jdbc.base.GenericMapConvertibleDAO Maven / Gradle / Ivy
package org.javaz.jdbc.base;
import org.javaz.jdbc.util.JdbcCachedHelper;
import org.javaz.jdbc.util.StringMapPair;
import java.sql.SQLException;
import java.util.*;
/**
* Basic DB work, based on MapConvertibleI & AbstractMapConvertibleHelper
*/
public class GenericMapConvertibleDAO {
private String databaseAddress;
public GenericMapConvertibleDAO(String databaseAddress) {
this.databaseAddress = databaseAddress;
}
public String getDatabaseAddress() {
return databaseAddress;
}
public void setDatabaseAddress(String databaseAddress) {
this.databaseAddress = databaseAddress;
}
private void internalSave(T obj, AbstractMapConvertibleHelper builder, boolean forceInsert) throws SQLException {
boolean idIsMissing = obj.getPrimaryKey() == null;
StringMapPair update = builder.getDbUpdateQuery(obj, forceInsert);
Number newId = JdbcCachedHelper.getInstance(databaseAddress).runUpdate(update);
if (idIsMissing) {
obj.setGeneratedPrimaryKey(newId.longValue());
}
}
public void add(T obj, AbstractMapConvertibleHelper builder) throws SQLException {
internalSave(obj, builder, !(obj.getPrimaryKey() == null));
}
public void saveOrUpdate(T obj, AbstractMapConvertibleHelper builder) throws SQLException {
internalSave(obj, builder, false);
}
public List all(AbstractMapConvertibleHelper builder) {
return findByConditions(null, null, builder);
}
public T findById(Comparable id, AbstractMapConvertibleHelper builder) {
HashMap params = new HashMap();
params.put(params.size() + 1, id);
List objects = findByConditions("where " + builder.getIdName() + " = ?", params, builder);
if (objects != null && !objects.isEmpty()) {
return objects.iterator().next();
}
return null;
}
public List findByConditions(String where, Map objects, AbstractMapConvertibleHelper builder) {
return findByFullQuery("select * from " + builder.getTableName() + " " + (where != null ? where : ""), objects, builder);
}
public List findByFullQuery(String query, Map objects, AbstractMapConvertibleHelper builder) {
List mapList = JdbcCachedHelper.getInstance(databaseAddress).getRecordList(query, objects);
ArrayList list = new ArrayList();
for (Object aMapList : mapList) {
Map map = (Map) aMapList;
list.add(builder.buildFromMap(map));
}
return list;
}
public void delete(T object, AbstractMapConvertibleHelper builder) {
StringMapPair delete = builder.getDbDeleteQuery(object);
JdbcCachedHelper.getInstance(databaseAddress).runUpdateDataIgnore(delete);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy