Browse Source

get SqlSessionFactory from MybatisSqlSessionFactoryBean (#985)

* rename from DatasourceUserMapper to DataSourceUserMapper

* add unit test in UserMapper and WorkerGroupMapper

* change cn.escheduler to org.apache.dolphinscheduler

* add unit test in UdfFuncMapperTest

* add unit test in UdfFuncMapperTest

* remove DatabaseConfiguration

* add ConnectionFactoryTest

* cal duration in processInstancesList

* change desc to description

* change table name in mysql ddl

* change table name in mysql ddl

* change escheduler to dolphinscheduler

* change escheduler to dolphinscheduler

* change escheduler to dolphinscheduler

* remove log4j-1.2-api and modify AlertMapperTest

* remove log4j-1.2-api

* Add alertDao to spring management

* Add alertDao to spring management

* get SqlSessionFactory from MybatisSqlSessionFactoryBean
pull/2/head
lgcareer 5 years ago committed by dailidong
parent
commit
e2f66e2343
  1. 11
      dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/AlertDao.java
  2. 31
      dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/ConnectionFactory.java

11
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/AlertDao.java

@ -16,16 +16,17 @@
*/ */
package org.apache.dolphinscheduler.dao; package org.apache.dolphinscheduler.dao;
import org.apache.commons.lang3.StringUtils;
import org.apache.dolphinscheduler.common.enums.AlertStatus; import org.apache.dolphinscheduler.common.enums.AlertStatus;
import org.apache.dolphinscheduler.common.enums.AlertType; import org.apache.dolphinscheduler.common.enums.AlertType;
import org.apache.dolphinscheduler.common.enums.ShowType; import org.apache.dolphinscheduler.common.enums.ShowType;
import org.apache.dolphinscheduler.dao.datasource.ConnectionFactory;
import org.apache.dolphinscheduler.dao.entity.Alert; import org.apache.dolphinscheduler.dao.entity.Alert;
import org.apache.dolphinscheduler.dao.mapper.AlertMapper;
import org.apache.dolphinscheduler.dao.mapper.UserAlertGroupMapper;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition; import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.ProcessInstance; import org.apache.dolphinscheduler.dao.entity.ProcessInstance;
import org.apache.dolphinscheduler.dao.entity.User; import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.commons.lang3.StringUtils; import org.apache.dolphinscheduler.dao.mapper.AlertMapper;
import org.apache.dolphinscheduler.dao.mapper.UserAlertGroupMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -47,8 +48,8 @@ public class AlertDao extends AbstractBaseDao {
@Override @Override
protected void init() { protected void init() {
// alertMapper = ConnectionFactory.getSqlSession().getMapper(AlertMapper.class); alertMapper = ConnectionFactory.getSqlSession().getMapper(AlertMapper.class);
// userAlertGroupMapper = ConnectionFactory.getSqlSession().getMapper(UserAlertGroupMapper.class); userAlertGroupMapper = ConnectionFactory.getSqlSession().getMapper(UserAlertGroupMapper.class);
} }
/** /**

31
dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/ConnectionFactory.java

@ -17,19 +17,20 @@
package org.apache.dolphinscheduler.dao.datasource; package org.apache.dolphinscheduler.dao.datasource;
import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSource;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.dolphinscheduler.common.Constants; import org.apache.dolphinscheduler.common.Constants;
import org.apache.ibatis.mapping.Environment; import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory; import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.SqlSessionTemplate;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource; import javax.sql.DataSource;
@ -43,7 +44,7 @@ public class ConnectionFactory {
private static SqlSessionFactory sqlSessionFactory; private static SqlSessionFactory sqlSessionFactory;
/** /**
* 加载配置文件 * Load configuration file
*/ */
private static org.apache.commons.configuration.Configuration conf; private static org.apache.commons.configuration.Configuration conf;
@ -79,7 +80,7 @@ public class ConnectionFactory {
/** /**
* get sql session factory * get sql session factory
*/ */
public static SqlSessionFactory getSqlSessionFactory() { public static SqlSessionFactory getSqlSessionFactory() throws Exception {
if (sqlSessionFactory == null) { if (sqlSessionFactory == null) {
synchronized (ConnectionFactory.class) { synchronized (ConnectionFactory.class) {
if (sqlSessionFactory == null) { if (sqlSessionFactory == null) {
@ -88,13 +89,17 @@ public class ConnectionFactory {
Environment environment = new Environment("development", transactionFactory, dataSource); Environment environment = new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment); MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setEnvironment(environment);
configuration.setLazyLoadingEnabled(true); configuration.setLazyLoadingEnabled(true);
configuration.addMappers("org.apache.dolphinscheduler.dao.mapper"); configuration.addMappers("org.apache.dolphinscheduler.dao.mapper");
MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactory = builder.build(configuration); sqlSessionFactoryBean.setTypeEnumsPackage("org.apache.dolphinscheduler.*.enums");
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:org/apache/dolphinscheduler/dao/mapper/*.xml"));
sqlSessionFactoryBean.setConfiguration(configuration);
return sqlSessionFactoryBean.getObject();
} }
} }
} }
@ -106,10 +111,20 @@ public class ConnectionFactory {
* get sql session * get sql session
*/ */
public static SqlSession getSqlSession() { public static SqlSession getSqlSession() {
try {
return new SqlSessionTemplate(getSqlSessionFactory()); return new SqlSessionTemplate(getSqlSessionFactory());
} catch (Exception e) {
logger.error(e.getMessage(),e);
throw new RuntimeException("get sqlSession failed!");
}
} }
public static <T> T getMapper(Class<T> type){ public static <T> T getMapper(Class<T> type){
try {
return getSqlSession().getMapper(type); return getSqlSession().getMapper(type);
} catch (Exception e) {
logger.error(e.getMessage(),e);
throw new RuntimeException("get mapper failed!");
}
} }
} }

Loading…
Cancel
Save