多数据源优化,支持分布式事务,支持Service层切换数据源;支持MyBatisDao注解指定数据源名称;jquery validate
remote 中文乱码导致验证失败问题;角色管理增加状态条件;附件列表增加上传人和时间;
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
-- 打开 my.ini 给 [mysqld] 增加如下配置:
|
||||
-- sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||
|
||||
set global read_only=0;
|
||||
|
||||
create user 'jeesite'@'%' identified by 'jeesite';
|
||||
|
||||
create database jeesite DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
|
||||
|
||||
@@ -6,4 +6,10 @@ create user jeesite
|
||||
grant connect,resource,create session,select any table,
|
||||
create any view,create any table,create any index,
|
||||
drop any table,drop any view,drop any index
|
||||
to jeesite;
|
||||
to jeesite;
|
||||
|
||||
-- 多数据源分布式事务下,需要对目标用户进行如下授权,否则会提示错误:ResourceException: Error in recovery
|
||||
grant select on sys.dba_pending_transactions to jeesite;
|
||||
grant select on sys.pending_trans$ to jeesite;
|
||||
grant select on sys.dba_2pc_pending to jeesite;
|
||||
grant execute on sys.dbms_system to jeesite;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.TreeDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.Area;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Area;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-22
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface AreaDao extends TreeDao<Area> {
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.TreeDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.Company;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Company;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-12
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface CompanyDao extends TreeDao<Company> {
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.CrudDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.CompanyOffice;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.CompanyOffice;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-23
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface CompanyOfficeDao extends CrudDao<CompanyOffice> {
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.CrudDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.EmpUser;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.EmpUser;
|
||||
* @author ThinkGem
|
||||
* @version 2015-4-24
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface EmpUserDao extends CrudDao<EmpUser> {
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.CrudDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.Employee;
|
||||
|
||||
@@ -11,8 +12,9 @@ import com.jeesite.modules.sys.entity.Employee;
|
||||
* 员工管理DAO接口
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-25
|
||||
* 通过 UserUtils.loadRefObj() 加载引用类型对象时,需要给MyBatisDao指定引用entity类型。
|
||||
*/
|
||||
@MyBatisDao(entity = Employee.class)
|
||||
@MyBatisDao(entity=Employee.class, dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface EmployeeDao extends CrudDao<Employee> {
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.CrudDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.EmployeePost;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.EmployeePost;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-25
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface EmployeePostDao extends CrudDao<EmployeePost> {
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.CrudDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.Log;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Log;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-19
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface LogDao extends CrudDao<Log> {
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.TreeDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.Office;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Office;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-23
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface OfficeDao extends TreeDao<Office> {
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
package com.jeesite.modules.sys.dao;
|
||||
|
||||
import com.jeesite.common.dao.CrudDao;
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.mybatis.annotation.MyBatisDao;
|
||||
import com.jeesite.modules.sys.entity.Post;
|
||||
|
||||
@@ -12,7 +13,7 @@ import com.jeesite.modules.sys.entity.Post;
|
||||
* @author ThinkGem
|
||||
* @version 2017-03-25
|
||||
*/
|
||||
@MyBatisDao
|
||||
@MyBatisDao(dataSourceName=DataSourceHolder.DEFAULT)
|
||||
public interface PostDao extends CrudDao<Post> {
|
||||
|
||||
}
|
||||
@@ -12,7 +12,6 @@ import org.springframework.core.NamedThreadLocal;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.jeesite.common.datasource.DataSourceHolder;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
import com.jeesite.common.lang.TimeUtils;
|
||||
import com.jeesite.common.service.BaseService;
|
||||
@@ -56,10 +55,7 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
long endTime = System.currentTimeMillis(); // 2、结束时间
|
||||
long executeTime = endTime - beginTime; // 3、获取执行时间
|
||||
startTimeThreadLocal.remove(); // 用完之后销毁线程变量数据
|
||||
|
||||
// 恢复多数据源参数,使用默认数据源
|
||||
DataSourceHolder.clearDataSourceName();
|
||||
|
||||
|
||||
// 保存日志
|
||||
LogUtils.saveLog(UserUtils.getUser(), request, handler, ex, null, null, executeTime);
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ jdbc:
|
||||
# 最大连接数
|
||||
maxActive: 20
|
||||
|
||||
# # 多数数据源名称列表,调用方式:DataSourceHolder.setDataSourceName("ds2")
|
||||
# # 多数据源名称列表,启用方式:@MyBatisDao(dataSourceName="ds2")
|
||||
# dataSourceNames: ds2
|
||||
#
|
||||
# # 多数据源配置:ds2
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
<logger name="org.mybatis.spring.transaction" level="DEBUG" />
|
||||
<logger name="org.apache.catalina.webresources.Cache" level="ERROR" />
|
||||
<logger name="org.springframework.boot.context.embedded" level="INFO" />
|
||||
<logger name="com.atomikos.icatch.config.UserTransactionServiceImp" level="ERROR" />
|
||||
<logger name="com.atomikos.jdbc.AbstractDataSourceBean" level="ERROR" />
|
||||
|
||||
<logger name="com.jeesite" level="DEBUG" />
|
||||
<logger name="com.jeesite.common.i18n" level="INFO" />
|
||||
|
||||
4
modules/core/src/main/resources/jta.properties
Normal file
4
modules/core/src/main/resources/jta.properties
Normal file
@@ -0,0 +1,4 @@
|
||||
# transactions.properties not found - looking for jta.properties in classpath...
|
||||
com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory
|
||||
com.atomikos.icatch.max_actives=-1
|
||||
com.atomikos.icatch.enable_logging=false
|
||||
@@ -46,8 +46,8 @@
|
||||
|
||||
<!-- 插件配置 -->
|
||||
<plugins>
|
||||
<plugin interceptor="com.jeesite.common.mybatis.interceptor.DataSourceInterceptor" />
|
||||
<plugin interceptor="com.jeesite.common.mybatis.interceptor.PaginationInterceptor" />
|
||||
<!-- <plugin interceptor="com.jeesite.common.mybatis.interceptor.TimerInterceptor" /> -->
|
||||
</plugins>
|
||||
|
||||
</configuration>
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
<li><a href="javascript:" id="switchSkin" title="${text('切换主题')}" style="margin-top:-1px;"><i class="fa fa-dashboard"></i></a></li>
|
||||
<% include('/modules/sys/sysIndex/topMenuLang.html'){} %>
|
||||
<% include('/modules/sys/sysIndex/topMenuOnline.html'){} %>
|
||||
<% include('/modules/sys/sysIndex/topMenuMsg.html'){} %>
|
||||
<% include('/modules/sys/sysIndex/topMenuNotify.html'){} %>
|
||||
<% include('/modules/sys/sysIndex/topMenuTask.html'){} %>
|
||||
<% //include('/modules/sys/sysIndex/topMenuMsg.html'){} %>
|
||||
<% //include('/modules/sys/sysIndex/topMenuNotify.html'){} %>
|
||||
<% //include('/modules/sys/sysIndex/topMenuTask.html'){} %>
|
||||
<% include('/modules/sys/sysIndex/topMenuUser.html'){} %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user