Commit 7e2523cb by gechengyang

修改mybatis相关操作,待完善

parent d8eb3207
package com.brilliance.scheduled; package com.brilliance.scheduled;
import com.ceb.gjjs.mda.service.impl.JobTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Component @Component
public class XxxtskSchedued { public class XxxtskSchedued {
@Scheduled(fixedRate = 5000) // 或者使用cron表达式 @Autowired
JobTask jobTask;
@Scheduled(fixedRate = 30000) // 或者使用cron表达式
public void reportCurrentTime() { public void reportCurrentTime() {
System.out.println("The time is now " + LocalDateTime.now()); System.out.println("The time is now " + LocalDateTime.now());
jobTask.start();
} }
} }
server:
port: 8088
servlet:
#context-path: /gjjs/business
servlet-path : /gjjs/business
spring:
ipsnew:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.110:3306/ips?useUnicode=true&characterEncoding=utf8
username: ips
password: ips
type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
# druid 配置: https://github.com/alibaba/druid/wiki/
#初始化链接数
initialSize: 1
minIdle: 1
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# validationQuery: select 1 from dual
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,stat用于监控界面,'wall'用于防火墙防御sql注入, slf4j用于druid记录sql日志
filters: stat,slf4j
#,wall
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
useGlobalDataSourceStat: false
redis:
host: 127.0.0.1
database: 0
port: 6379
password:
envConfig:
rootPath: workRoot
cache:
#缓存类型(guava/redis)
type: redis
#缓存失效时间(秒)
expireAfterAccess: 3600
#序列化方式
serializer: kryo
spring: spring:
profiles: profiles:
active: oracle active: mysql
logging: logging:
config: classpath:logback.xml config: classpath:logback.xml
......
...@@ -16,6 +16,37 @@ ...@@ -16,6 +16,37 @@
</encoder> </encoder>
</appender> </appender>
<appender name="GJJSFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/gjjs.log</file>
<append>true</append>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/logs/gjjs.%d{yyyy-MM-dd}.%i.log.zip
</fileNamePattern>
<maxFileSize>${maxFileSize}</maxFileSize>
</rollingPolicy>
<encoder>
<pattern>${pattern}</pattern>
<charset>${charset}</charset>
<immediateFlush>${immediateFlush}</immediateFlush>
</encoder>
<!--<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>-->
</appender>
<!--<appender name="GJJSFILE" class="ch.qos.logback.core.FileAppender">
<file>gjjs.log</file>
<encoder>
<pattern>>${pattern}</pattern>
</encoder>
</appender>-->
<appender name="INFO_FILE" <appender name="INFO_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender"> class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/info.log</file> <file>${LOG_HOME}/info.log</file>
...@@ -121,10 +152,12 @@ ...@@ -121,10 +152,12 @@
<logger name="com.ceb" level="DEBUG" /> <logger name="com.ceb" level="DEBUG" />
<root level="INFO"> <root level="INFO">
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
<appender-ref ref="INFO_FILE_ASYNC" /> <!-- <appender-ref ref="INFO_FILE_ASYNC" />
<appender-ref ref="DEBUG_FILE_ASYNC" /> <appender-ref ref="DEBUG_FILE_ASYNC" />
<appender-ref ref="ERROR_FILE_ASYNC" /> <appender-ref ref="ERROR_FILE_ASYNC" />-->
<appender-ref ref="GJJSFILE" />
</root> </root>
</configuration> </configuration>
\ No newline at end of file
...@@ -14,4 +14,8 @@ ...@@ -14,4 +14,8 @@
delete from LCK where TXT = #{key} delete from LCK where TXT = #{key}
</select> </select>
<select id="deleteByName" resultType="java.lang.Integer">
delete from LCK where NAM = #{key}
</select>
</mapper> </mapper>
\ No newline at end of file
package com.brilliance.test; package com.brilliance.test;
import com.ceb.gjjs.mda.service.impl.JobTask;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.HashSet; import java.util.HashSet;
public class Test { public class Test {
@Autowired
JobTask jobTask;
@org.junit.jupiter.api.Test @org.junit.jupiter.api.Test
public void test() { public void test() {
HashSet set = new HashSet(); HashSet set = new HashSet();
...@@ -15,4 +21,11 @@ public class Test { ...@@ -15,4 +21,11 @@ public class Test {
} }
@org.junit.jupiter.api.Test
public void testTask() {
JobTask jobTask=new JobTask();
jobTask.start();;
}
} }
...@@ -6,6 +6,7 @@ import com.brilliance.mda.runtime.mda.ILocker; ...@@ -6,6 +6,7 @@ import com.brilliance.mda.runtime.mda.ILocker;
import com.brilliance.mda.runtime.mda.LockInfo; import com.brilliance.mda.runtime.mda.LockInfo;
import com.brilliance.mda.runtime.mda.driver.MdaEnv; import com.brilliance.mda.runtime.mda.driver.MdaEnv;
import com.brilliance.mda.support.mybatis.lck.LckMapper; import com.brilliance.mda.support.mybatis.lck.LckMapper;
import org.apache.commons.lang3.StringUtils;
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;
...@@ -54,21 +55,27 @@ public class DBLocker implements ILocker { ...@@ -54,21 +55,27 @@ public class DBLocker implements ILocker {
MdaEnv.getContext().setErrorCode(Constants.ERROR_LOCKED); MdaEnv.getContext().setErrorCode(Constants.ERROR_LOCKED);
return null; return null;
} }
return new LockInfo(date, key.toString()); // return new LockInfo(date, key.toString());
return new LockInfo(date, lockName);
} }
@Override @Override
public boolean unlock(Serializable key) { public boolean unlock(Serializable key) {
return unlock(key.toString(),null);
}
@Override
public boolean unlock(String lockname, Serializable key) {
int count=-1;
try { try {
lckMapper.delete(key.toString()); if (StringUtils.isNotEmpty(lockname)) {
count=lckMapper.deleteByName(lockname);
} else if (StringUtils.isNotEmpty(key.toString())) {
count=lckMapper.delete(key.toString());
}
} catch (Exception e) { } catch (Exception e) {
return false; return false;
} }
return true; return true;
} }
@Override
public boolean unlock(String lockname, Serializable key) {
return false;
}
} }
...@@ -32,8 +32,7 @@ import java.math.BigDecimal; ...@@ -32,8 +32,7 @@ import java.math.BigDecimal;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.*;
import static com.brilliance.mda.support.mybatis.MybatisArgumentAdapter.AdaType.DELETE; import static com.brilliance.mda.support.mybatis.MybatisArgumentAdapter.AdaType.*;
import static com.brilliance.mda.support.mybatis.MybatisArgumentAdapter.AdaType.SELECT;
import static com.brilliance.mda.support.mybatis.MybatisArgumentAdapter.HOLDER_SQL; import static com.brilliance.mda.support.mybatis.MybatisArgumentAdapter.HOLDER_SQL;
/** /**
...@@ -395,9 +394,31 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession ...@@ -395,9 +394,31 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
return list.size(); return list.size();
} }
// @Override
public <T extends IModule> int dbReadsetByLimit(IModuleList<T> list, int maxSize, Argument... args) {
if (isMultiDb) {
String moduleDB = MdaUtils.getModuleListDB(list);
DynamicDataSourceContextHolder.setDataSourceType(moduleDB);
}
list.clear();
MybatisArgumentAdapter adapter = new MybatisArgumentAdapter(SELECTBYLIMIT ,maxSize, list.getDataClass(), args);
List<T> result = this.dyncRead(list.getDataClass(), adapter);
list.addAll(result);
return list.size();
}
@Override @Override
public <T extends IModule> int dbReadset(IModuleList<T> list, int maxSize, Argument... args) { public <T extends IModule> int dbReadset(IModuleList<T> list, int maxSize, Argument... args) {
return 0; int retSize=0;
if(maxSize==0)
{
retSize=dbReadset(list,args);
}
else{
//TODO maxSize不为0时,需要优化
retSize=dbReadsetByLimit(list,maxSize,args);
}
return retSize;
} }
@Override @Override
...@@ -436,6 +457,11 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession ...@@ -436,6 +457,11 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
@Override @Override
public void dbReadset(IModuleList list, int maxSize) { public void dbReadset(IModuleList list, int maxSize) {
if(maxSize==0){
dbReadset(list);
}else {
//TODO maxSize不为0时,需要优化
}
} }
...@@ -626,6 +652,21 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession ...@@ -626,6 +652,21 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
return new ArrayList<>(list); return new ArrayList<>(list);
} }
private <T> List<T> dyncRead(Class<T> clazz, int maxSize,MybatisArgumentAdapter adapter) {
IContext ctx = MdaEnv.getContext();
BaseVO baseVO = ctx.getVo();
String sqlId = getSqlId(clazz, SQLID_DYNCREAD);
// sqlId =sqlId+" "
List<T> list = sqlSessionTemplate.selectList(sqlId, adapter.getSqlParams());
PageInfo<T> pageInfo = new PageInfo<T>(list);
long total = pageInfo.getTotal();
baseVO.setTotal(total);
if (list == null || list.size() == 0) {
setNoMoreRow();
}
return new ArrayList<>(list);
}
private <T> List<T> dyncRead(Class<T> clazz, Map params) { private <T> List<T> dyncRead(Class<T> clazz, Map params) {
......
...@@ -38,6 +38,8 @@ public class MybatisArgumentAdapter { ...@@ -38,6 +38,8 @@ public class MybatisArgumentAdapter {
public static enum AdaType { public static enum AdaType {
SELECT("SELECT * FROM %s WHERE %s"), SELECT("SELECT * FROM %s WHERE %s"),
SELECTBYLIMIT("SELECT * FROM %s WHERE %s limit %d"),
JOIN_SELECT("SELECT * %s"), JOIN_SELECT("SELECT * %s"),
DELETE("DELETE FROM %s WHERE %s"); DELETE("DELETE FROM %s WHERE %s");
...@@ -66,6 +68,8 @@ public class MybatisArgumentAdapter { ...@@ -66,6 +68,8 @@ public class MybatisArgumentAdapter {
private String tableName; private String tableName;
private String selectTable; private String selectTable;
private int maxSize=0;
public MybatisArgumentAdapter(AdaType type, Class<? extends IModule> clazz, Argument... args) { public MybatisArgumentAdapter(AdaType type, Class<? extends IModule> clazz, Argument... args) {
this.clazz = clazz; this.clazz = clazz;
...@@ -75,6 +79,15 @@ public class MybatisArgumentAdapter { ...@@ -75,6 +79,15 @@ public class MybatisArgumentAdapter {
this.init(); this.init();
} }
public MybatisArgumentAdapter(AdaType type,int maxSize, Class<? extends IModule> clazz, Argument... args) {
this.clazz = clazz;
this.maxSize=maxSize;
this.pattern = type.getValue();
this.args = args;
this.tableName = convertTableName();
this.init();
}
public MybatisArgumentAdapter(AdaType type, Class<? extends IModule> clazz, String whereSql) { public MybatisArgumentAdapter(AdaType type, Class<? extends IModule> clazz, String whereSql) {
this(type, clazz, whereSql, null); this(type, clazz, whereSql, null);
} }
......
...@@ -43,5 +43,11 @@ public class LckMapper { ...@@ -43,5 +43,11 @@ public class LckMapper {
return template.delete(FNAME + ".delete", map); return template.delete(FNAME + ".delete", map);
} }
public Integer deleteByName(@Param("key") String key) {
Map<String, Object> map = new HashMap<>();
map.put("key", key);
return template.delete(FNAME + ".deleteByName", map);
}
} }
\ No newline at end of file
...@@ -91,6 +91,13 @@ ...@@ -91,6 +91,13 @@
<systemPath>${basedir}/../lib/ojdbc6-12.1.0.2.jar</systemPath> <systemPath>${basedir}/../lib/ojdbc6-12.1.0.2.jar</systemPath>
</dependency> </dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
<scope>system</scope>
<systemPath>${basedir}/../lib/mysql-connector-java-8.0.11.jar</systemPath>
</dependency>
</dependencies> </dependencies>
<distributionManagement> <distributionManagement>
<repository> <repository>
......
...@@ -65,6 +65,7 @@ public interface IDaoSession { ...@@ -65,6 +65,7 @@ public interface IDaoSession {
void dbReadset(IModuleList list, int maxSize); void dbReadset(IModuleList list, int maxSize);
String dbName(); String dbName();
List<String> dbColumnNames(); List<String> dbColumnNames();
......
package com.brilliance.mda.runtime.mda.impl; package com.brilliance.mda.runtime.mda.impl;
import com.brilliance.mda.runtime.mda.IModule;
import com.brilliance.mda.runtime.mda.IModuleList;
import com.brilliance.mda.runtime.mda.driver.MdaEnv; import com.brilliance.mda.runtime.mda.driver.MdaEnv;
import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionDefinition;
...@@ -49,4 +51,5 @@ public abstract class AbstractDaoSession { ...@@ -49,4 +51,5 @@ public abstract class AbstractDaoSession {
return status.get() != null; return status.get() != null;
//return false; //return false;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment