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版本 -->
<jdk.version>1.7</jdk.version> <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> <shiro.version>1.3.2</shiro.version>
<log4j2.version>2.7</log4j2.version> <log4j2.version>2.7</log4j2.version>
<beetlsql.version>2.8.5</beetlsql.version> <beetlsql.version>2.8.5</beetlsql.version>
@ -285,7 +285,7 @@
<!-- 生产环境 --> <!-- 生产环境 -->
<id>production</id> <id>production</id>
<properties> <properties>
<profiles.active>production</profiles.active> <profiles.active>prod</profiles.active>
</properties> </properties>
</profile> </profile>
</profiles> </profiles>

View File

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

View File

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

View File

@ -1,28 +1,22 @@
package com.smallchill.test.beetlsql; 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.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Properties; 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") @SuppressWarnings("rawtypes")
public class BeetlTest { public class BeetlTest {
@Test //@Test
public void 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); 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); System.out.println(list);