提交 c90720ee 编写于 作者: 黄勇

【I】代码优化;提供 DataAccessor 接口及其默认实现

上级 d68e6268
package org.smart4j.framework.core;
package org.smart4j.framework;
import org.smart4j.framework.core.ConfigHelper;
public interface FrameworkConstant {
......
package org.smart4j.framework.core;
package org.smart4j.framework;
import org.smart4j.framework.aop.AopHelper;
import org.smart4j.framework.dao.DatabaseHelper;
......
package org.smart4j.framework.core;
package org.smart4j.framework;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.smart4j.framework.core.ClassScanner;
import org.smart4j.framework.core.ConfigHelper;
import org.smart4j.framework.core.impl.DefaultClassScanner;
import org.smart4j.framework.dao.DataAccessor;
import org.smart4j.framework.dao.impl.DefaultDataAccessor;
import org.smart4j.framework.ds.DataSourceFactory;
import org.smart4j.framework.ds.impl.DefaultDataSourceFactory;
import org.smart4j.framework.mvc.HandlerExceptionResolver;
......@@ -39,6 +43,11 @@ public class InstanceFactory {
*/
private static final String DS_FACTORY = "smart.framework.custom.ds_factory";
/**
* DataAccessor
*/
private static final String DATA_ACCESSOR = "smart.framework.custom.data_accessor";
/**
* HandlerMapping
*/
......@@ -73,6 +82,13 @@ public class InstanceFactory {
return getInstance(DS_FACTORY, DefaultDataSourceFactory.class);
}
/**
* 获取 DataAccessor
*/
public static DataAccessor getDataAccessor() {
return getInstance(DATA_ACCESSOR, DefaultDataAccessor.class);
}
/**
* 获取 HandlerMapping
*/
......
......@@ -8,14 +8,14 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.InstanceFactory;
import org.smart4j.framework.aop.annotation.Aspect;
import org.smart4j.framework.aop.annotation.AspectOrder;
import org.smart4j.framework.aop.proxy.Proxy;
import org.smart4j.framework.aop.proxy.ProxyManager;
import org.smart4j.framework.core.ClassHelper;
import org.smart4j.framework.core.ClassScanner;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.core.InstanceFactory;
import org.smart4j.framework.core.fault.InitializationError;
import org.smart4j.framework.ioc.BeanHelper;
import org.smart4j.framework.plugin.PluginProxy;
......
......@@ -2,6 +2,7 @@ package org.smart4j.framework.core;
import java.lang.annotation.Annotation;
import java.util.List;
import org.smart4j.framework.InstanceFactory;
/**
* 根据条件获取相关类
......
......@@ -2,6 +2,7 @@ package org.smart4j.framework.core;
import java.util.Map;
import java.util.Properties;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.util.PropsUtil;
/**
......
package org.smart4j.framework.dao;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* 数据访问器
*
* @author huangyong
* @since 2.3
*/
public interface DataAccessor {
/**
* 查询对应的实体,返回单条记录
*/
<T> T queryEntity(Class<T> entityClass, String sql, Object... params);
/**
* 查询对应的实体列表,返回多条记录
*/
<T> List<T> queryEntityList(Class<T> entityClass, String sql, Object... params);
/**
* 查询对应的实体列表,返回单条记录(主键 => 实体)
*/
<K, V> Map<K, V> queryEntityMap(Class<V> entityClass, String sql, Object... params);
/**
* 查询对应的数据,返回单条记录
*/
Object[] queryArray(String sql, Object... params);
/**
* 查询对应的数据,返回多条记录
*/
List<Object[]> queryArrayList(String sql, Object... params);
/**
* 查询对应的数据,返回单条记录(列名 => 数据)
*/
Map<String, Object> queryMap(String sql, Object... params);
/**
* 查询对应的数据,返回多条记录(列名 => 数据)
*/
List<Map<String, Object>> queryMapList(String sql, Object... params);
/**
* 查询对应的数据,返回单条数据(列名 => 数据)
*/
<T> T queryColumn(String sql, Object... params);
/**
* 查询对应的数据,返回多条数据(列名 => 数据)
*/
<T> List<T> queryColumnList(String sql, Object... params);
/**
* 查询指定列名对应的数据,返回多条数据(列名对应的数据 => 列名与数据的映射关系)
*/
<T> Map<T, Map<String, Object>> queryColumnMap(String column, String sql, Object... params);
/**
* 查询记录条数,返回总记录数
*/
long queryCount(String sql, Object... params);
/**
* 执行更新操作(包括:update、insert、delete)
*/
int update(String sql, Object... params);
/**
* 插入一条记录,返回插入后的主键
*/
Serializable insertReturnPK(String sql, Object... params);
}
......@@ -3,38 +3,17 @@ package org.smart4j.framework.dao;
import java.io.File;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.sql.DataSource;
import org.apache.commons.dbutils.BasicRowProcessor;
import org.apache.commons.dbutils.BeanProcessor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.BeanMapHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.InstanceFactory;
import org.smart4j.framework.core.ConfigHelper;
import org.smart4j.framework.core.InstanceFactory;
import org.smart4j.framework.ds.DataSourceFactory;
import org.smart4j.framework.orm.EntityHelper;
import org.smart4j.framework.util.ArrayUtil;
import org.smart4j.framework.util.ClassUtil;
import org.smart4j.framework.util.MapUtil;
import org.smart4j.framework.util.StringUtil;
/**
* 封装数据库相关操作
......@@ -52,34 +31,19 @@ public class DatabaseHelper {
private static final ThreadLocal<Connection> connContainer = new ThreadLocal<Connection>();
/**
* 获取数据源工厂(用于获取数据源)
* 获取数据源工厂
*/
private static final DataSourceFactory dataSourceFactory = InstanceFactory.getDataSourceFactory();
/**
* 数据库类型
* 获取数据访问器
*/
private static final String databaseType = ConfigHelper.getString("smart.framework.jdbc.type");
private static final DataAccessor dataAccessor = InstanceFactory.getDataAccessor();
/**
* 数据源
*/
private static final DataSource dataSource;
/**
* Apache Commons DbUtils 的 QueryRunner
* 数据库类型
*/
private static final QueryRunner queryRunner;
static {
if (StringUtil.isNotEmpty(databaseType)) {
dataSource = getDataSource();
queryRunner = new QueryRunner(dataSource);
} else {
dataSource = null;
queryRunner = null;
}
}
private static final String databaseType = ConfigHelper.getString("smart.framework.jdbc.type");
/**
* 获取数据库类型
......@@ -105,7 +69,7 @@ public class DatabaseHelper {
conn = connContainer.get();
if (conn == null) {
// 若不存在,则从 DataSource 中获取 Connection
conn = dataSource.getConnection();
conn = getDataSource().getConnection();
// 将 Connection 放入 ThreadLocal 中
if (conn != null) {
connContainer.set(conn);
......@@ -172,249 +136,109 @@ public class DatabaseHelper {
}
/**
* 根据 SQL 语句查询 Entity
* 初始化 SQL 脚本
*/
public static <T> T queryEntity(Class<T> entityClass, String sql, Object... params) {
T result;
public static void initSQL(String sqlPath) {
try {
Map<String, String> fieldMap = EntityHelper.getEntityMap().get(entityClass);
if (MapUtil.isNotEmpty(fieldMap)) {
result = queryRunner.query(sql, new BeanHandler<T>(entityClass, new BasicRowProcessor(new BeanProcessor(fieldMap))), params);
} else {
result = queryRunner.query(sql, new BeanHandler<T>(entityClass), params);
File sqlFile = new File(ClassUtil.getClassPath() + sqlPath);
List<String> sqlList = FileUtils.readLines(sqlFile);
for (String sql : sqlList) {
update(sql);
}
} catch (SQLException e) {
logger.error("查询出错!", e);
} catch (Exception e) {
logger.error("初始化 SQL 脚本出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
}
/**
* 根据 SQL 语句查询 Entity
*/
public static <T> T queryEntity(Class<T> entityClass, String sql, Object... params) {
return dataAccessor.queryEntity(entityClass, sql, params);
}
/**
* 根据 SQL 语句查询 Entity 列表
*/
public static <T> List<T> queryEntityList(Class<T> entityClass, String sql, Object... params) {
List<T> result;
try {
Map<String, String> fieldMap = EntityHelper.getEntityMap().get(entityClass);
if (MapUtil.isNotEmpty(fieldMap)) {
result = queryRunner.query(sql, new BeanListHandler<T>(entityClass, new BasicRowProcessor(new BeanProcessor(fieldMap))), params);
} else {
result = queryRunner.query(sql, new BeanListHandler<T>(entityClass), params);
}
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
return dataAccessor.queryEntityList(entityClass, sql, params);
}
/**
* 根据 SQL 语句查询 Entity 映射(Field Name => Field Value)
*/
public static <K, V> Map<K, V> queryEntityMap(Class<V> entityClass, String sql, Object... params) {
Map<K, V> entityMap;
try {
entityMap = queryRunner.query(sql, new BeanMapHandler<K, V>(entityClass), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return entityMap;
return dataAccessor.queryEntityMap(entityClass, sql, params);
}
/**
* 根据 SQL 语句查询 Array 格式的字段(单条记录)
*/
public static Object[] queryArray(String sql, Object... params) {
Object[] array;
try {
array = queryRunner.query(sql, new ArrayHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return array;
return dataAccessor.queryArray(sql, params);
}
/**
* 根据 SQL 语句查询 Array 格式的字段列表(多条记录)
*/
public static List<Object[]> queryArrayList(String sql, Object... params) {
List<Object[]> arrayList;
try {
arrayList = queryRunner.query(sql, new ArrayListHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return arrayList;
return dataAccessor.queryArrayList(sql, params);
}
/**
* 根据 SQL 语句查询 Map 格式的字段(单条记录)
*/
public static Map<String, Object> queryMap(String sql, Object... params) {
Map<String, Object> map;
try {
map = queryRunner.query(sql, new MapHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return map;
return dataAccessor.queryMap(sql, params);
}
/**
* 根据 SQL 语句查询 Map 格式的字段列表(多条记录)
*/
public static List<Map<String, Object>> queryMapList(String sql, Object... params) {
List<Map<String, Object>> fieldMapList;
try {
fieldMapList = queryRunner.query(sql, new MapListHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return fieldMapList;
return dataAccessor.queryMapList(sql, params);
}
/**
* 根据 SQL 语句查询指定字段(单条记录)
*/
public static <T> T queryField(String sql, Object... params) {
T entity;
try {
entity = queryRunner.query(sql, new ScalarHandler<T>(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return entity;
public static <T> T queryColumn(String sql, Object... params) {
return dataAccessor.queryColumn(sql, params);
}
/**
* 根据 SQL 语句查询指定字段列表(多条记录)
*/
public static <T> List<T> queryFieldList(String sql, Object... params) {
List<T> list;
try {
list = queryRunner.query(sql, new ColumnListHandler<T>(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return list;
}
/**
* 根据 SQL 语句查询指定字段集合(多条记录)
*/
public static <T> Set<T> queryFieldSet(String sql, Object... params) {
List<T> list = queryFieldList(sql, params);
return new LinkedHashSet<T>(list);
public static <T> List<T> queryColumnList(String sql, Object... params) {
return dataAccessor.queryColumnList(sql, params);
}
/**
* 根据 SQL 语句查询指定字段映射(多条记录)
*/
public static <T> Map<T, Map<String, Object>> queryFieldMap(String column, String sql, Object... params) {
Map<T, Map<String, Object>> map;
try {
map = queryRunner.query(sql, new KeyedHandler<T>(column), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return map;
public static <T> Map<T, Map<String, Object>> queryColumnMap(String column, String sql, Object... params) {
return dataAccessor.queryColumnMap(column, sql, params);
}
/**
* 根据 SQL 语句查询记录条数
*/
public static long queryCount(String sql, Object... params) {
long result;
try {
result = queryRunner.query(sql, new ScalarHandler<Long>("count(*)"), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
return dataAccessor.queryCount(sql, params);
}
/**
* 执行更新语句(包括:update、insert、delete)
*/
public static int update(String sql, Object... params) {
int result;
try {
Connection conn = getConnection();
result = queryRunner.update(conn, sql, params);
} catch (SQLException e) {
logger.error("更新出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
return dataAccessor.update(sql, params);
}
/**
* 执行插入语句,返回插入后的主键
*/
public static Serializable insertReturnPK(String sql, Object... params) {
Serializable key = null;
Connection conn = getConnection();
try {
PreparedStatement pstmt = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
if (ArrayUtil.isNotEmpty(params)) {
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i + 1, params[i]);
}
}
int rows = pstmt.executeUpdate();
if (rows == 1) {
ResultSet rs = pstmt.getGeneratedKeys();
if (rs.next()) {
key = (Serializable) rs.getObject(1);
}
}
} catch (SQLException e) {
logger.error("插入出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return key;
}
/**
* 初始化 SQL 脚本
*/
public static void initSQL(String sqlPath) {
try {
File sqlFile = new File(ClassUtil.getClassPath() + sqlPath);
List<String> sqlList = FileUtils.readLines(sqlFile);
for (String sql : sqlList) {
update(sql);
}
} catch (Exception e) {
logger.error("初始化 SQL 脚本出错!", e);
throw new RuntimeException(e);
}
}
private static void printSQL(String sql) {
logger.debug("[Smart] SQL - {}", sql);
return dataAccessor.insertReturnPK(sql, params);
}
}
......@@ -3,7 +3,7 @@ package org.smart4j.framework.dao;
import java.util.Collection;
import java.util.Map;
import java.util.Properties;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.orm.annotation.Table;
import org.smart4j.framework.util.CollectionUtil;
import org.smart4j.framework.util.MapUtil;
......
package org.smart4j.framework.dao.impl;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.commons.dbutils.BasicRowProcessor;
import org.apache.commons.dbutils.BeanProcessor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.BeanMapHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.KeyedHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.dao.DataAccessor;
import org.smart4j.framework.dao.DatabaseHelper;
import org.smart4j.framework.orm.EntityHelper;
import org.smart4j.framework.util.ArrayUtil;
import org.smart4j.framework.util.MapUtil;
/**
* 默认数据访问器
* <br/>
* 基于 Apache Commons DbUtils 实现
*
* @author huangyong
* @since 2.3
*/
public class DefaultDataAccessor implements DataAccessor {
private static final Logger logger = LoggerFactory.getLogger(DefaultDataAccessor.class);
private final QueryRunner queryRunner;
public DefaultDataAccessor() {
DataSource dataSource = DatabaseHelper.getDataSource();
queryRunner = new QueryRunner(dataSource);
}
@Override
public <T> T queryEntity(Class<T> entityClass, String sql, Object... params) {
T result;
try {
Map<String, String> fieldMap = EntityHelper.getEntityMap().get(entityClass);
if (MapUtil.isNotEmpty(fieldMap)) {
result = queryRunner.query(sql, new BeanHandler<T>(entityClass, new BasicRowProcessor(new BeanProcessor(fieldMap))), params);
} else {
result = queryRunner.query(sql, new BeanHandler<T>(entityClass), params);
}
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
}
@Override
public <T> List<T> queryEntityList(Class<T> entityClass, String sql, Object... params) {
List<T> result;
try {
Map<String, String> fieldMap = EntityHelper.getEntityMap().get(entityClass);
if (MapUtil.isNotEmpty(fieldMap)) {
result = queryRunner.query(sql, new BeanListHandler<T>(entityClass, new BasicRowProcessor(new BeanProcessor(fieldMap))), params);
} else {
result = queryRunner.query(sql, new BeanListHandler<T>(entityClass), params);
}
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
}
@Override
public <K, V> Map<K, V> queryEntityMap(Class<V> entityClass, String sql, Object... params) {
Map<K, V> entityMap;
try {
entityMap = queryRunner.query(sql, new BeanMapHandler<K, V>(entityClass), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return entityMap;
}
@Override
public Object[] queryArray(String sql, Object... params) {
Object[] array;
try {
array = queryRunner.query(sql, new ArrayHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return array;
}
@Override
public List<Object[]> queryArrayList(String sql, Object... params) {
List<Object[]> arrayList;
try {
arrayList = queryRunner.query(sql, new ArrayListHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return arrayList;
}
@Override
public Map<String, Object> queryMap(String sql, Object... params) {
Map<String, Object> map;
try {
map = queryRunner.query(sql, new MapHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return map;
}
@Override
public List<Map<String, Object>> queryMapList(String sql, Object... params) {
List<Map<String, Object>> fieldMapList;
try {
fieldMapList = queryRunner.query(sql, new MapListHandler(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return fieldMapList;
}
@Override
public <T> T queryColumn(String sql, Object... params) {
T entity;
try {
entity = queryRunner.query(sql, new ScalarHandler<T>(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return entity;
}
@Override
public <T> List<T> queryColumnList(String sql, Object... params) {
List<T> list;
try {
list = queryRunner.query(sql, new ColumnListHandler<T>(), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return list;
}
@Override
public <T> Map<T, Map<String, Object>> queryColumnMap(String column, String sql, Object... params) {
Map<T, Map<String, Object>> map;
try {
map = queryRunner.query(sql, new KeyedHandler<T>(column), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return map;
}
@Override
public long queryCount(String sql, Object... params) {
long result;
try {
result = queryRunner.query(sql, new ScalarHandler<Long>("count(*)"), params);
} catch (SQLException e) {
logger.error("查询出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
}
@Override
public int update(String sql, Object... params) {
int result;
try {
Connection conn = DatabaseHelper.getConnection();
result = queryRunner.update(conn, sql, params);
} catch (SQLException e) {
logger.error("更新出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return result;
}
@Override
public Serializable insertReturnPK(String sql, Object... params) {
Serializable key = null;
try {
Connection conn = DatabaseHelper.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
if (ArrayUtil.isNotEmpty(params)) {
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i + 1, params[i]);
}
}
int rows = pstmt.executeUpdate();
if (rows == 1) {
ResultSet rs = pstmt.getGeneratedKeys();
if (rs.next()) {
key = (Serializable) rs.getObject(1);
}
}
} catch (SQLException e) {
logger.error("插入出错!", e);
throw new RuntimeException(e);
}
printSQL(sql);
return key;
}
private static void printSQL(String sql) {
logger.debug("[Smart] SQL - {}", sql);
}
}
......@@ -3,7 +3,7 @@ package org.smart4j.framework.ds;
import javax.sql.DataSource;
/**
* 数据源工厂接口
* 数据源工厂
*
* @author huangyong
* @since 2.3
......
......@@ -6,7 +6,7 @@ import org.smart4j.framework.ds.DataSourceFactory;
import org.smart4j.framework.util.StringUtil;
/**
* 抽象数据源工厂接口实现类
* 抽象数据源工厂
*
* @author huangyong
* @since 2.3
......
......@@ -3,7 +3,9 @@ package org.smart4j.framework.ds.impl;
import org.apache.commons.dbcp.BasicDataSource;
/**
* 默认数据源工厂接口实现类
* 默认数据源工厂
* <br/>
* 基于 Apache Commons DBCP 实现
*
* @author huangyong
* @since 2.3
......
......@@ -6,8 +6,8 @@ import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRegistration;
import javax.servlet.annotation.WebListener;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.core.HelperLoader;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.HelperLoader;
import org.smart4j.framework.plugin.Plugin;
import org.smart4j.framework.plugin.PluginHelper;
import org.smart4j.framework.plugin.WebPlugin;
......
......@@ -10,8 +10,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.core.InstanceFactory;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.InstanceFactory;
import org.smart4j.framework.util.WebUtil;
/**
......
......@@ -18,7 +18,7 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.mvc.bean.Multipart;
import org.smart4j.framework.mvc.bean.Multiparts;
import org.smart4j.framework.mvc.bean.Params;
......
......@@ -2,7 +2,7 @@ package org.smart4j.framework.mvc.impl;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.mvc.HandlerExceptionResolver;
import org.smart4j.framework.mvc.fault.AccessException;
import org.smart4j.framework.mvc.fault.PermissionException;
......
......@@ -8,7 +8,7 @@ import java.util.Map;
import java.util.regex.Matcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.smart4j.framework.core.InstanceFactory;
import org.smart4j.framework.InstanceFactory;
import org.smart4j.framework.ioc.BeanHelper;
import org.smart4j.framework.mvc.Handler;
import org.smart4j.framework.mvc.HandlerInvoker;
......
......@@ -3,7 +3,7 @@ package org.smart4j.framework.mvc.impl;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.mvc.UploadHelper;
import org.smart4j.framework.mvc.ViewResolver;
import org.smart4j.framework.mvc.bean.Result;
......
......@@ -168,7 +168,7 @@ public class DataSet {
*/
public static <T> T selectColumn(Class<T> entityClass, String columnName, String condition, Object... params) {
String sql = SqlHelper.generateSelectSql(entityClass, condition, "");
return DatabaseHelper.queryField(columnName, sql, params);
return DatabaseHelper.queryColumn(columnName, sql, params);
}
/**
......@@ -176,6 +176,6 @@ public class DataSet {
*/
public static <T> List<T> selectColumnList(Class<?> entityClass, String columnName, String condition, String sort, Object... params) {
String sql = SqlHelper.generateSelectSql(entityClass, condition, sort);
return DatabaseHelper.queryFieldList(columnName, sql, params);
return DatabaseHelper.queryColumnList(columnName, sql, params);
}
}
......@@ -2,9 +2,9 @@ package org.smart4j.framework.plugin;
import java.util.ArrayList;
import java.util.List;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.InstanceFactory;
import org.smart4j.framework.core.ClassScanner;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.core.InstanceFactory;
import org.smart4j.framework.core.fault.InitializationError;
/**
......
......@@ -6,7 +6,7 @@ import java.util.List;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.FrameworkMethod;
import org.junit.runners.model.InitializationError;
import org.smart4j.framework.core.HelperLoader;
import org.smart4j.framework.HelperLoader;
import org.smart4j.framework.test.annotation.TestOrder;
/**
......
......@@ -9,7 +9,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
/**
* 编码与解码操作工具类
......
......@@ -10,7 +10,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
/**
* 文件操作工具类
......
......@@ -22,7 +22,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FilenameUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
/**
* Web 操作工具类
......
......@@ -7,7 +7,7 @@ import org.slf4j.LoggerFactory;
import org.smart4j.framework.ds.impl.AbstractDataSourceFactory;
/**
* 基于 C3P0 的数据源工厂接口实现类
* 基于 C3P0 的数据源工厂
*
* @author huangyong
* @since 2.3
......
......@@ -7,7 +7,7 @@ import org.slf4j.LoggerFactory;
import org.smart4j.framework.ds.impl.AbstractDataSourceFactory;
/**
* 基于 Durid 的数据源工厂接口实现类
* 基于 Durid 的数据源工厂
*
* @author huangyong
* @since 2.3
......
......@@ -12,8 +12,8 @@ import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.core.ConfigHelper;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.util.ClassUtil;
import org.smart4j.framework.util.StringUtil;
import org.smart4j.framework.util.WebUtil;
......
......@@ -5,7 +5,7 @@ import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.plugin.Plugin;
import org.smart4j.framework.util.ArrayUtil;
import org.smart4j.framework.util.ClassUtil;
......
......@@ -12,7 +12,7 @@ import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.log.NullLogChute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.smart4j.framework.core.FrameworkConstant;
import org.smart4j.framework.FrameworkConstant;
import org.smart4j.framework.util.ClassUtil;
import org.smart4j.framework.util.FileUtil;
import org.smart4j.plugin.template.TemplateEngine;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册