v2.0 fix

上级 d314530a
......@@ -6,6 +6,7 @@ import java.util.List;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.mybatis.jpa.dialect.Dialect;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -16,6 +17,8 @@ public class MyBatisSessionFactoryBean extends SqlSessionFactoryBean {
private List<Interceptor> interceptors = Collections.emptyList();
private int timeout = 30 ;
private String dialect = Dialect.DEFAULT_DIALECT;
public void setInterceptors(List<Interceptor> interceptors) {
this.interceptors = interceptors;
}
......@@ -23,7 +26,11 @@ public class MyBatisSessionFactoryBean extends SqlSessionFactoryBean {
public void setTimeout(int timeout) {
this.timeout = timeout;
}
public void setDialect(String dialect) {
this.dialect = dialect;
}
protected SqlSessionFactory buildSqlSessionFactory() throws Exception {
SqlSessionFactory factory = super.buildSqlSessionFactory();
......@@ -33,7 +40,11 @@ public class MyBatisSessionFactoryBean extends SqlSessionFactoryBean {
for (Interceptor interceptor : interceptors) {
config.addInterceptor(interceptor);
}
StatementHandlerInterceptor statementHandlerInterceptor =new StatementHandlerInterceptor();
statementHandlerInterceptor.setDialectString(Dialect.getDialect(dialect));
config.addInterceptor(statementHandlerInterceptor);
_logger.debug("DefaultStatementTimeout : "+ config.getDefaultStatementTimeout());
config.setDefaultStatementTimeout(timeout);
_logger.debug("after change ,DefaultStatementTimeout : "+ config.getDefaultStatementTimeout());
......@@ -44,4 +55,7 @@ public class MyBatisSessionFactoryBean extends SqlSessionFactoryBean {
public SqlSessionFactory build() throws Exception {
return buildSqlSessionFactory();
}
}
\ No newline at end of file
......@@ -23,7 +23,7 @@ public abstract class Dialect {
public static final String DEFAULT_BATCH_SIZE = "15";
public static final String NO_BATCH = "0";
public static final String DEFAULT_DIALECT = "mysql";
protected static HashMap<String,String> dialectMap;
......@@ -88,5 +88,13 @@ public abstract class Dialect {
return dialectMap;
}
public static String getDialect(String dialect) {
String dialectString =dialectMap.get(dialect);
if(dialectString == null) {
dialectString =dialectMap.get(DEFAULT_DIALECT);
}
return dialectString;
}
}
......@@ -24,6 +24,6 @@ config.datasource.database=mysql
config.datasource.driverclass=com.mysql.jdbc.Driver
config.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true&characterEncoding=UTF-8
config.datasource.username=root
config.datasource.password=connsec
config.datasource.password=maxkey
############################################################################
\ No newline at end of file
......@@ -18,7 +18,7 @@
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- dataSource define begin -->
<!-- c3p0 configuration -->
<!-- c3p0 configuration
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" >
<property name="driverClass" value="${config.datasource.driverclass}"/>
<property name="jdbcUrl" value="${config.datasource.url}"/>
......@@ -29,5 +29,12 @@
<property name="initialPoolSize" value="15"/>
</bean>
-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close" >
<!-- <property name="driverClass" value="#{dataSoruceConfig.driverClass}"/> -->
<property name="url" value="${config.datasource.url}"/>
<property name="username" value="${config.datasource.username}"/>
<property name="password" value="${config.datasource.password}"/>
</bean>
</beans>
\ No newline at end of file
......@@ -35,6 +35,7 @@
<!--<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">-->
<bean id="sqlSessionFactory" class="org.apache.mybatis.jpa.MyBatisSessionFactoryBean">
<property name="timeout" value="30" />
<property name="dialect" value="mysql" />
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:/org/apache/mybatis/jpa/test/dao/persistence/xml/mysql/*.xml" />
<property name="typeAliasesPackage"
......@@ -44,13 +45,6 @@
<property name="transactionFactory">
<bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
</property>
<property name="interceptors">
<list>
<bean class="org.apache.mybatis.jpa.StatementHandlerInterceptor">
<property name="dialectString" value="org.apache.mybatis.jpa.dialect.MySQLDialect"/>
</bean>
</list>
</property>
</bean>
<!-- scan for mappers and let them be autowired -->
......
......@@ -16,8 +16,6 @@
package org.apache.mybatis.jpa.starter;
import java.beans.PropertyDescriptor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -34,7 +32,6 @@ import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.TypeHandler;
import org.apache.mybatis.jpa.MyBatisSessionFactoryBean;
import org.apache.mybatis.jpa.StatementHandlerInterceptor;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.mapper.MapperFactoryBean;
......@@ -134,11 +131,7 @@ public class MybatisAutoConfiguration implements InitializingBean {
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
//mybatis-jpa
MyBatisSessionFactoryBean factory = new MyBatisSessionFactoryBean();
StatementHandlerInterceptor interceptor=new org.apache.mybatis.jpa.StatementHandlerInterceptor();
interceptor.setDialectString("org.apache.mybatis.jpa.dialect.MySQLDialect");
List<Interceptor> interceptors = new ArrayList<Interceptor>();
interceptors.add(interceptor);
factory.setInterceptors(interceptors);
factory.setDataSource(dataSource);
factory.setVfs(SpringBootVFS.class);
......@@ -152,6 +145,12 @@ public class MybatisAutoConfiguration implements InitializingBean {
if (!ObjectUtils.isEmpty(this.interceptors)) {
factory.setPlugins(this.interceptors);
}
//mybatis-jpa
if (StringUtils.hasLength(this.properties.getDialect())) {
factory.setDialect(this.properties.getDialect());
}
if (this.databaseIdProvider != null) {
factory.setDatabaseIdProvider(this.databaseIdProvider);
}
......
......@@ -58,6 +58,7 @@ public class MybatisProperties {
*/
private String typeAliasesPackage;
private String dialect;
/**
* The super class for filtering type alias. If this not specifies, the MyBatis deal as type alias all classes that
* searched from typeAliasesPackage.
......@@ -213,4 +214,12 @@ public class MybatisProperties {
}
}
public String getDialect() {
return dialect;
}
public void setDialect(String dialect) {
this.dialect = dialect;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册