This commit is contained in:
smallchill 2017-03-11 22:17:56 +08:00
parent 3fb6e95bb9
commit 747e6bdcd0
10 changed files with 164 additions and 170 deletions

View File

@ -15,7 +15,7 @@
<!-- 编译jdk版本 -->
<jdk.version>1.7</jdk.version>
<!-- 依赖版本 -->
<spring.version>4.3.6.RELEASE</spring.version>
<spring.version>4.3.7.RELEASE</spring.version>
<shiro.version>1.3.2</shiro.version>
<log4j2.version>2.7</log4j2.version>
<beetlsql.version>2.8.5</beetlsql.version>
@ -285,7 +285,7 @@
<!-- 生产环境 -->
<id>production</id>
<properties>
<profiles.active>production</profiles.active>
<profiles.active>prod</profiles.active>
</properties>
</profile>
</profiles>

View File

@ -1,27 +1,27 @@
ENGINE = org.beetl.sql.core.engine.SQLTemplateEngine
DELIMITER_PLACEHOLDER_START = #{
DELIMITER_PLACEHOLDER_END = }
DELIMITER_STATEMENT_START = @
DELIMITER_STATEMENT_END=
HTML_TAG_SUPPORT = false
CHARSET= UTF-8
FN.use = org.beetl.sql.core.engine.UseFunction
FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction
FN.text = org.beetl.sql.core.engine.TextFunction
FN.join = org.beetl.sql.ext.JoinFunction
FN.isEmpty = org.beetl.sql.core.engine.EmptyExpressionFunction
FN.isNotEmpty = org.beetl.sql.core.engine.NotEmptyExpressionFunction
FN.db.testNull = org.beetl.sql.core.engine.TestNullFunction
FN.db.dynamicSql = org.beetl.sql.core.engine.DynamicSqlFunction
FN.page = org.beetl.sql.core.engine.PageQueryFuntion
FN.orm.many = org.beetl.sql.core.orm.ORMManyEntityFunction
FN.orm.single = org.beetl.sql.core.orm.ORMSingleEntityFunction
FN.orm.lazyMany=org.beetl.sql.core.orm.LazyORMManyEntityFunction
FN.orm.lazySingle=org.beetl.sql.core.orm.LazyORMSingleEntityFunction
TAG.trim = org.beetl.sql.core.engine.TrimTag
TAG.pageTag = org.beetl.sql.core.engine.PageQueryTag
TAG.pageIgnoreTag= org.beetl.sql.core.engine.PageQueryIgnoreTag
TAG.where= org.beetl.sql.core.engine.WhereTag
ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler
PRODUCT_MODE = true
OFFSET_START_ZERO = false
ENGINE = org.beetl.sql.core.engine.SQLTemplateEngine
DELIMITER_PLACEHOLDER_START = #{
DELIMITER_PLACEHOLDER_END = }
DELIMITER_STATEMENT_START = @
DELIMITER_STATEMENT_END=
HTML_TAG_SUPPORT = false
CHARSET= UTF-8
FN.use = org.beetl.sql.core.engine.UseFunction
FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction
FN.text = org.beetl.sql.core.engine.TextFunction
FN.join = org.beetl.sql.ext.JoinFunction
FN.isEmpty = org.beetl.sql.core.engine.EmptyExpressionFunction
FN.isNotEmpty = org.beetl.sql.core.engine.NotEmptyExpressionFunction
FN.db.testNull = org.beetl.sql.core.engine.TestNullFunction
FN.db.dynamicSql = org.beetl.sql.core.engine.DynamicSqlFunction
FN.page = org.beetl.sql.core.engine.PageQueryFuntion
FN.orm.many = org.beetl.sql.core.orm.ORMManyEntityFunction
FN.orm.single = org.beetl.sql.core.orm.ORMSingleEntityFunction
FN.orm.lazyMany=org.beetl.sql.core.orm.LazyORMManyEntityFunction
FN.orm.lazySingle=org.beetl.sql.core.orm.LazyORMSingleEntityFunction
TAG.trim = org.beetl.sql.core.engine.TrimTag
TAG.pageTag = org.beetl.sql.core.engine.PageQueryTag
TAG.pageIgnoreTag= org.beetl.sql.core.engine.PageQueryIgnoreTag
TAG.where= org.beetl.sql.core.engine.WhereTag
ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler
PRODUCT_MODE = true
OFFSET_START_ZERO = false

View File

@ -1,128 +1,128 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!-- 连接池配置文件 -->
<bean id="propertyConfigurer" class="com.smallchill.core.toolbox.support.EncryptablePropertyPlaceholder">
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
<!-- base dataSource -->
<bean id="baseDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${druid.initialSize}" />
<property name="maxActive" value="${druid.maxActive}" />
<property name="minIdle" value="${druid.minIdle}" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${druid.maxWait}" />
<!-- 用来检测连接是否有效的sql,要求是一个查询语句 -->
<property name="validationQuery" value="SELECT 'x' from dual" />
<!-- 申请连接的时候检测,如果空闲时间大于 -->
<!-- 建议配置为true,不影响性能,并且保证安全性 -->
<property name="testWhileIdle" value="true" />
<!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
<property name="testOnBorrow" value="false" />
<!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
<property name="testOnReturn" value="false" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="600000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 超过时间限制是否回收 -->
<property name="removeAbandoned" value="true" />
<!-- 超时时间单位为秒。180秒=3分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="false" />
<!-- 配置监控统计拦截的filters去掉后监控界面sql无法统计 -->
<property name="filters" value="mergeStat" />
</bean>
<!-- 主数据源 -->
<bean id="dataSource" parent="baseDataSource" init-method="init">
<property name="driverClassName" value="${encrypt.master.driver}" />
<property name="url" value="${encrypt.master.url}" />
<property name="username" value="${encrypt.master.username}" />
<property name="password" value="${encrypt.master.password}" />
</bean>
<!-- 多数据源 -->
<!--<bean id="otherSource" parent="baseDataSource" init-method="init">
<property name="driverClassName" value="${other.driver}" />
<property name="url" value="${other.url}" />
<property name="username" value="${other.username}" />
<property name="password" value="${other.password}" />
</bean>-->
<!-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> -->
<!-- 如果 "proxy-target-class" 属值被设置为 "true"那么基于类的代理将起作用这时需要CGLIB库cglib.jar在CLASSPATH中。如果 "proxy-target-class" 属值被设置为 "false" 或者这个属性被省略那么标准的JDK基于接口的代理将起作用。 -->
<!-- 启用CGliB -->
<!-- <aop:aspectj-autoproxy proxy-target-class="true"/> -->
<!-- 主数据库事务配置 -->
<!-- 事务管理配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 拦截器方式 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="list*" propagation="REQUIRED" read-only="true" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="query*" propagation="REQUIRED" read-only="true" />
<tx:method name="save*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="add*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="create*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="change*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="eidt*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="remove*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="update*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="saveOrUpdate*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="delete*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="grant*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="modify*" propagation="REQUIRED" rollback-for="RuntimeException" />
<!-- <tx:method name="*" propagation="REQUIRED" /> -->
</tx:attributes>
</tx:advice>
<!-- AOP 配置 -->
<aop:config>
<!-- 第一个*代表所有的返回值类型;第二个*代表所有的类;第三个*代表类所有方法;..代表子或者孙子包;最后一个..代表所有的参数 -->
<aop:pointcut id="serviceMethods" expression="execution(* com.smallchill.*..service.*.*(..))" />
<aop:advisor id="txAdvisor" pointcut-ref="serviceMethods" advice-ref="txAdvice" order="1" />
</aop:config>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!-- 连接池配置文件 -->
<bean id="propertyConfigurer" class="com.smallchill.core.toolbox.support.EncryptablePropertyPlaceholder">
<property name="locations">
<list>
<value>classpath:config.properties</value>
</list>
</property>
</bean>
<!-- base dataSource -->
<bean id="baseDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${druid.initialSize}" />
<property name="maxActive" value="${druid.maxActive}" />
<property name="minIdle" value="${druid.minIdle}" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${druid.maxWait}" />
<!-- 用来检测连接是否有效的sql,要求是一个查询语句 -->
<property name="validationQuery" value="SELECT 'x' from dual" />
<!-- 申请连接的时候检测,如果空闲时间大于 -->
<!-- 建议配置为true,不影响性能,并且保证安全性 -->
<property name="testWhileIdle" value="true" />
<!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
<property name="testOnBorrow" value="false" />
<!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
<property name="testOnReturn" value="false" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="600000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 超过时间限制是否回收 -->
<property name="removeAbandoned" value="true" />
<!-- 超时时间单位为秒。180秒=3分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="false" />
<!-- 配置监控统计拦截的filters去掉后监控界面sql无法统计 -->
<property name="filters" value="mergeStat" />
</bean>
<!-- 主数据源 -->
<bean id="dataSource" parent="baseDataSource" init-method="init">
<property name="driverClassName" value="${encrypt.master.driver}" />
<property name="url" value="${encrypt.master.url}" />
<property name="username" value="${encrypt.master.username}" />
<property name="password" value="${encrypt.master.password}" />
</bean>
<!-- 多数据源 -->
<!--<bean id="otherSource" parent="baseDataSource" init-method="init">
<property name="driverClassName" value="${other.driver}" />
<property name="url" value="${other.url}" />
<property name="username" value="${other.username}" />
<property name="password" value="${other.password}" />
</bean>-->
<!-- 配置 Annotation 驱动,扫描@Transactional注解的类定义事务 -->
<!-- <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/> -->
<!-- 如果 "proxy-target-class" 属值被设置为 "true"那么基于类的代理将起作用这时需要CGLIB库cglib.jar在CLASSPATH中。如果 "proxy-target-class" 属值被设置为 "false" 或者这个属性被省略那么标准的JDK基于接口的代理将起作用。 -->
<!-- 启用CGliB -->
<!-- <aop:aspectj-autoproxy proxy-target-class="true"/> -->
<!-- 主数据库事务配置 -->
<!-- 事务管理配置 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 拦截器方式 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="list*" propagation="REQUIRED" read-only="true" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="query*" propagation="REQUIRED" read-only="true" />
<tx:method name="save*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="add*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="create*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="change*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="eidt*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="remove*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="update*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="saveOrUpdate*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="delete*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="grant*" propagation="REQUIRED" rollback-for="RuntimeException" />
<tx:method name="modify*" propagation="REQUIRED" rollback-for="RuntimeException" />
<!-- <tx:method name="*" propagation="REQUIRED" /> -->
</tx:attributes>
</tx:advice>
<!-- AOP 配置 -->
<aop:config>
<!-- 第一个*代表所有的返回值类型;第二个*代表所有的类;第三个*代表类所有方法;..代表子或者孙子包;最后一个..代表所有的参数 -->
<aop:pointcut id="serviceMethods" expression="execution(* com.smallchill.*..service.*.*(..))" />
<aop:advisor id="txAdvisor" pointcut-ref="serviceMethods" advice-ref="txAdvice" order="1" />
</aop:config>
</beans>

View File

@ -1,28 +1,22 @@
package com.smallchill.test.beetlsql;
import com.smallchill.core.beetl.ReportInterceptor;
import com.smallchill.core.toolbox.CMap;
import com.smallchill.core.toolbox.kit.CharsetKit;
import org.beetl.sql.core.*;
import org.beetl.sql.core.db.PostgresStyle;
import org.springframework.core.io.ClassPathResource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.beetl.sql.core.ClasspathLoader;
import org.beetl.sql.core.DefaultNameConversion;
import org.beetl.sql.core.Interceptor;
import org.beetl.sql.core.SQLLoader;
import org.beetl.sql.core.SQLManager;
import org.beetl.sql.core.db.PostgresStyle;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import com.smallchill.core.beetl.ReportInterceptor;
import com.smallchill.core.toolbox.CMap;
import com.smallchill.core.toolbox.kit.CharsetKit;
@SuppressWarnings("rawtypes")
public class BeetlTest {
@Test
//@Test
public void test() {
List<Map> list = getSqlManager().execute("select * from blade_notice where id = #{id}", Map.class, CMap.init().set("id", 1), 1, 10);
System.out.println(list);