From 6e60b36091f07ff8460ff4f60e8a30d7604910a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Wed, 14 Mar 2012 00:33:55 +0800 Subject: [PATCH] add mapping support --- .../alibaba/druid/mapping/MappingEngine.java | 62 ++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/mapping/MappingEngine.java b/src/main/java/com/alibaba/druid/mapping/MappingEngine.java index 6659770c8c..4d4a1ac5b1 100644 --- a/src/main/java/com/alibaba/druid/mapping/MappingEngine.java +++ b/src/main/java/com/alibaba/druid/mapping/MappingEngine.java @@ -7,6 +7,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.sql.DataSource; + import com.alibaba.druid.mapping.spi.ExportParameterVisitor; import com.alibaba.druid.mapping.spi.MappingProvider; import com.alibaba.druid.mapping.spi.MappingVisitor; @@ -24,11 +26,20 @@ public class MappingEngine { private LinkedHashMap entities = new LinkedHashMap(); private Integer maxLimit; private final MappingProvider provider; + private DataSource dataSource; public MappingEngine(){ this(new MySqlMappingProvider()); } + public DataSource getDataSource() { + return dataSource; + } + + public void setDataSource(DataSource dataSource) { + this.dataSource = dataSource; + } + public MappingEngine(MappingProvider provider){ this.provider = provider; } @@ -150,7 +161,7 @@ public class MappingEngine { int updateCount = JdbcUtils.executeUpdate(conn, rawSql, parameters); return updateCount; } - + public int update(Connection conn, String sql, List parameters) throws SQLException { SQLUpdateStatement sqlObject = this.explainToUpdateSQLObject(sql); exportParameters(sqlObject, parameters); @@ -158,11 +169,58 @@ public class MappingEngine { int updateCount = JdbcUtils.executeUpdate(conn, rawSql, parameters); return updateCount; } - + public void insert(Connection conn, String sql, List parameters) throws SQLException { SQLInsertStatement sqlObject = this.explainToInsertSQLObject(sql); exportParameters(sqlObject, parameters); String rawSql = this.toSQL(sqlObject); JdbcUtils.execute(conn, rawSql, parameters); } + + public Connection getConnection() throws SQLException { + if (dataSource == null) { + throw new SQLException("datasource not init."); + } + return this.dataSource.getConnection(); + } + + public List> select(String sql, List parameters) throws SQLException { + Connection conn = null; + try { + conn = getConnection(); + return select(conn, sql, parameters); + } finally { + JdbcUtils.close(conn); + } + } + + public int delete(String sql, List parameters) throws SQLException { + Connection conn = null; + try { + conn = getConnection(); + return delete(conn, sql, parameters); + } finally { + JdbcUtils.close(conn); + } + } + + public int update(String sql, List parameters) throws SQLException { + Connection conn = null; + try { + conn = getConnection(); + return update(conn, sql, parameters); + } finally { + JdbcUtils.close(conn); + } + } + + public void insert(String sql, List parameters) throws SQLException { + Connection conn = null; + try { + conn = getConnection(); + insert(conn, sql, parameters); + } finally { + JdbcUtils.close(conn); + } + } }