登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
12月21日就在北京,来看大模型推理 + 国产硬件生态 + 开源社区分享,一起搞技术、聊开源、领福利~~
代码拉取完成,页面将自动刷新
开源项目
>
数据库相关
>
数据库开发包
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
261
Star
3K
Fork
599
MyBatis-Flex
/
MyBatis-Flex
代码
Issues
298
Pull Requests
10
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
[Bug]: QueryMethods.case when参数异常,中间包含了个null值
待办的
#ID1KDN
Kermi
创建于
2025-10-13 13:36
### 这个 Bug 是否已经存在: - [x] 我确定已经把 MyBatis-Flex 升级到最新版本 v1.11.1,并已搜索过现有的问题 (https://gitee.com/mybatis-flex/mybatis-flex/issues) ### 如何复现: version:1.11.3 jdk:8 QueryMethods.case_() .`when`(ALARM_RULE.ID.isNull) .then("notConfig") .else_( QueryMethods.case_() .`when`(ALARM_RULE.ENABLE.eq(true)) .then( QueryMethods.case_() .`when`(ALARM_RULE_CACHE.ALARMING.eq(1, true)) .then("alarming") .else_("enable") .end() ) .else_("disable") .end() ) .end().`as`("ruleStatus"), Cause: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set  完整代码: val columns = listOf( ALARM_RULE.ID.`as`("id"), DEVICE_STRUCTURE.DEVICE_CODE.`as`("deviceCode"), DEVICE.DEVICE_NAME.`as`("deviceName"), DEVICE.DEVICE_CLASS_NAME.`as`("deviceClassName"), FACTORY.PLANT_NODE_NAME.`as`("plantNodeName"), DEVICE_STRUCTURE.GROUP_NAME.`as`("groupName"), DEVICE_STRUCTURE.ATTRIBUTE_NAME.`as`("attributeName"), DEVICE_STRUCTURE.DISPLAY_NAME.`as`("displayName"), DEVICE_STRUCTURE.INPUT.`as`("input"), ALARM_RULE.ENABLE.`as`("enable"), QueryMethods.case_() .`when`(ALARM_RULE.ID.isNull) .then("notConfig") .else_( QueryMethods.case_() .`when`(ALARM_RULE.ENABLE.eq(true)) .then( QueryMethods.case_() .`when`(ALARM_RULE_CACHE.ALARMING.eq(1, true)) .then("alarming") .else_("enable") .end() ) .else_("disable") .end() ) .end().`as`("ruleStatus"), ALARM_RULE.CONDITION_SCRIPT.`as`("conditionScript"), ALARM_RULE.LL.`as`("ll"), ALARM_RULE.L.`as`("l"), ALARM_RULE.H.`as`("h"), ALARM_RULE.HH.`as`("hh"), ALARM_RULE.DEADBAND_TYPE.`as`("deadbandType"), ALARM_RULE.DEADBAND.`as`("deadband"), ALARM_RULE.EXCEEDANCE_DURATION.`as`("exceedanceDuration"), ALARM_RULE.SET_COUNT.`as`("setCount"), ALARM_RULE.SET_LEVEL.`as`("setLevel"), ALARM_RULE.SET_CHANGE_RATE.`as`("setChangeRate"), ) val chain = QueryChain.of(deviceDao.deviceStructureMapper) .select(columns) .leftJoin(ALARM_RULE).on(ALARM_RULE.PROPERTY_PATH.eq(DEVICE_STRUCTURE.INPUT)) .leftJoin(DEVICE).on(DEVICE_STRUCTURE.DEVICE_CODE.eq(DEVICE.DEVICE_CODE)) .leftJoin(FACTORY).on(DEVICE.PLANT_NODE_ID.eq(FACTORY.PLANT_NODE_ID)) .leftJoin(ALARM_RULE_CACHE).on(ALARM_RULE_CACHE.REF_ID.eq(ALARM_RULE.ID)) .where(DEVICE_STRUCTURE.DEVICE_CODE.eq(req.param.deviceCode, !req.param.deviceCode.isNullOrEmpty())) .and(DEVICE.DEVICE_NAME.like(req.param.deviceName, !req.param.deviceName.isNullOrEmpty())) .and( QueryCondition.createEmpty() .and(DEVICE.DEVICE_CLASS_NAME.like(req.param.deviceClassName, !req.param.deviceClassName.isNullOrEmpty())) .or(DEVICE.DEVICE_CLASS_CODE.like(req.param.deviceClassName, !req.param.deviceClassName.isNullOrEmpty())) ) .and(FACTORY.PLANT_NODE_NAME.like(req.param.plantNodeName, !req.param.plantNodeName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.GROUP_NAME.like(req.param.groupName, !req.param.groupName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.DISPLAY_NAME.like(req.param.displayName, !req.param.displayName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.ATTRIBUTE_NAME.like(req.param.attributeName, !req.param.attributeName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.INPUT.like(req.param.input, !req.param.input.isNullOrEmpty())) //处理alarmStatus if (!req.param.ruleStatus.isNullOrEmpty()) { val ruleStatusCondition = QueryCondition.createEmpty() if (req.param.ruleStatus!!.contains("notConfig")) { ruleStatusCondition.and(ALARM_RULE.ID.isNull) } if (req.param.ruleStatus!!.contains("alarming")) { ruleStatusCondition.or(ALARM_RULE_CACHE.ALARMING.eq(1)) } if (req.param.ruleStatus!!.contains("enable")) { ruleStatusCondition.or(ALARM_RULE.ID.isNotNull.and(ALARM_RULE_CACHE.ALARMING.eq(0))) } if (req.param.ruleStatus!!.contains("disable")) { ruleStatusCondition.and(ALARM_RULE.ID.isNotNull.and(ALARM_RULE.ENABLE.eq(0))) } chain.and(ruleStatusCondition) } TOSQL: SELECT `alarm_rule`.`id` AS `id`, `device_structure`.`device_code` AS `deviceCode`, `device`.`device_name` AS `deviceName`, `device`.`device_class_name` AS `deviceClassName`, `factory`.`plant_node_name` AS `plantNodeName`, `device_structure`.`group_name` AS `groupName`, `device_structure`.`attribute_name` AS `attributeName`, `device_structure`.`display_name` AS `displayName`, `device_structure`.`input` AS `input`, `alarm_rule`.`enable` AS `enable`, (CASE WHEN `alarm_rule`.`id` IS NULL THEN 'notConfig' ELSE (CASE WHEN `alarm_rule`.`enable` = ? THEN (CASE WHEN `alarm_rule_cache`.`alarming` = ? THEN 'alarming' ELSE 'enable' END) ELSE 'disable' END) END) AS `ruleStatus`, `alarm_rule`.`condition_script` AS `conditionScript`, `alarm_rule`.`ll` AS `ll`, `alarm_rule`.`l` AS `l`, `alarm_rule`.`h` AS `h`, `alarm_rule`.`hh` AS `hh`, `alarm_rule`.`deadband_type` AS `deadbandType`, `alarm_rule`.`deadband` AS `deadband`, `alarm_rule`.`exceedance_duration` AS `exceedanceDuration`, `alarm_rule`.`set_count` AS `setCount`, `alarm_rule`.`set_level` AS `setLevel`, `alarm_rule`.`set_change_rate` AS `setChangeRate` FROM `device_structure` LEFT JOIN `alarm_rule` ON (`alarm_rule`.`property_path` = `device_structure`.`input`) AND `alarm_rule`.`valid` = ? LEFT JOIN `device` ON `device_structure`.`device_code` = `device`.`device_code` LEFT JOIN `factory` ON `device`.`plant_node_id` = `factory`.`plant_node_id` LEFT JOIN `alarm_rule_cache` ON `alarm_rule_cache`.`ref_id` = `alarm_rule`.`id` ORDER BY `alarm_rule`.`id` DESC LIMIT 0, 20 ### 预期结果: SQL正常执行 ### 实际结果: org.springframework.dao.TransientDataAccessResourceException: ### Error querying database. Cause: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set ### The error may exist in com/supcon/pride/fahm/baseinfo/mapper/DeviceStructureMapper.java (best guess) ### The error may involve com.supcon.pride.fahm.baseinfo.mapper.DeviceStructureMapper.selectListByQuery ### The error occurred while executing a query ### SQL: SELECT `alarm_rule`.`id` AS `id`, `device_structure`.`device_code` AS `deviceCode`, `device`.`device_name` AS `deviceName`, `device`.`device_class_name` AS `deviceClassName`, `factory`.`plant_node_name` AS `plantNodeName`, `device_structure`.`group_name` AS `groupName`, `device_structure`.`attribute_name` AS `attributeName`, `device_structure`.`display_name` AS `displayName`, `device_structure`.`input` AS `input`, `alarm_rule`.`enable` AS `enable`, (CASE WHEN `alarm_rule`.`id` IS NULL THEN 'notConfig' ELSE (CASE WHEN `alarm_rule`.`enable` = ? THEN (CASE WHEN `alarm_rule_cache`.`alarming` = ? THEN 'alarming' ELSE 'enable' END) ELSE 'disable' END) END) AS `ruleStatus`, `alarm_rule`.`condition_script` AS `conditionScript`, `alarm_rule`.`ll` AS `ll`, `alarm_rule`.`l` AS `l`, `alarm_rule`.`h` AS `h`, `alarm_rule`.`hh` AS `hh`, `alarm_rule`.`deadband_type` AS `deadbandType`, `alarm_rule`.`deadband` AS `deadband`, `alarm_rule`.`exceedance_duration` AS `exceedanceDuration`, `alarm_rule`.`set_count` AS `setCount`, `alarm_rule`.`set_level` AS `setLevel`, `alarm_rule`.`set_change_rate` AS `setChangeRate` FROM `device_structure` LEFT JOIN `alarm_rule` ON (`alarm_rule`.`property_path` = `device_structure`.`input`) AND `alarm_rule`.`valid` = ? LEFT JOIN `device` ON `device_structure`.`device_code` = `device`.`device_code` LEFT JOIN `factory` ON `device`.`plant_node_id` = `factory`.`plant_node_id` LEFT JOIN `alarm_rule_cache` ON `alarm_rule_cache`.`ref_id` = `alarm_rule`.`id` ORDER BY `alarm_rule`.`id` DESC LIMIT 0, 20 ### Cause: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set ; (conn=5095259) Parameter at position 3 is not set; nested exception is java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:70) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439) at com.sun.proxy.$Proxy124.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80) at com.mybatisflex.core.mybatis.binding.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:146) at com.mybatisflex.core.mybatis.binding.FlexMapperProxy.invoke(FlexMapperProxy.java:90) at com.sun.proxy.$Proxy129.selectListByQuery(Unknown Source) at com.mybatisflex.core.BaseMapper.selectListByQueryAs(BaseMapper.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.mybatisflex.core.mybatis.binding.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:159) at com.mybatisflex.core.mybatis.binding.FlexMapperProxy.invoke(FlexMapperProxy.java:90) at com.sun.proxy.$Proxy129.selectListByQueryAs(Unknown Source) at com.mybatisflex.core.util.MapperUtil.doPaginate(MapperUtil.java:230) at com.mybatisflex.core.BaseMapper.paginateAs(BaseMapper.java:1160) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.mybatisflex.core.mybatis.binding.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:159) at com.mybatisflex.core.mybatis.binding.FlexMapperProxy.invoke(FlexMapperProxy.java:90) at com.sun.proxy.$Proxy129.paginateAs(Unknown Source) at com.mybatisflex.core.query.MapperQueryChain.pageAs(MapperQueryChain.java:180) at com.supcon.pride.fahm.tag.controller.AlarmController.conditionAlarmRulePage(AlarmController.kt:122) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) at javax.servlet.http.HttpServlet.service(HttpServlet.java:517) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275) at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449) at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:309) at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:354) at org.mariadb.jdbc.ClientPreparedStatement.validParameters(ClientPreparedStatement.java:345) at org.mariadb.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:80) at org.mariadb.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:232) at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) at com.mybatisflex.core.mybatis.FlexStatementHandler.query(FlexStatementHandler.java:103) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) at sun.reflect.GeneratedMethodAccessor131.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ... 92 common frames omitted ### 截图或视频: ### 关联版本: 1.11.3
### 这个 Bug 是否已经存在: - [x] 我确定已经把 MyBatis-Flex 升级到最新版本 v1.11.1,并已搜索过现有的问题 (https://gitee.com/mybatis-flex/mybatis-flex/issues) ### 如何复现: version:1.11.3 jdk:8 QueryMethods.case_() .`when`(ALARM_RULE.ID.isNull) .then("notConfig") .else_( QueryMethods.case_() .`when`(ALARM_RULE.ENABLE.eq(true)) .then( QueryMethods.case_() .`when`(ALARM_RULE_CACHE.ALARMING.eq(1, true)) .then("alarming") .else_("enable") .end() ) .else_("disable") .end() ) .end().`as`("ruleStatus"), Cause: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set  完整代码: val columns = listOf( ALARM_RULE.ID.`as`("id"), DEVICE_STRUCTURE.DEVICE_CODE.`as`("deviceCode"), DEVICE.DEVICE_NAME.`as`("deviceName"), DEVICE.DEVICE_CLASS_NAME.`as`("deviceClassName"), FACTORY.PLANT_NODE_NAME.`as`("plantNodeName"), DEVICE_STRUCTURE.GROUP_NAME.`as`("groupName"), DEVICE_STRUCTURE.ATTRIBUTE_NAME.`as`("attributeName"), DEVICE_STRUCTURE.DISPLAY_NAME.`as`("displayName"), DEVICE_STRUCTURE.INPUT.`as`("input"), ALARM_RULE.ENABLE.`as`("enable"), QueryMethods.case_() .`when`(ALARM_RULE.ID.isNull) .then("notConfig") .else_( QueryMethods.case_() .`when`(ALARM_RULE.ENABLE.eq(true)) .then( QueryMethods.case_() .`when`(ALARM_RULE_CACHE.ALARMING.eq(1, true)) .then("alarming") .else_("enable") .end() ) .else_("disable") .end() ) .end().`as`("ruleStatus"), ALARM_RULE.CONDITION_SCRIPT.`as`("conditionScript"), ALARM_RULE.LL.`as`("ll"), ALARM_RULE.L.`as`("l"), ALARM_RULE.H.`as`("h"), ALARM_RULE.HH.`as`("hh"), ALARM_RULE.DEADBAND_TYPE.`as`("deadbandType"), ALARM_RULE.DEADBAND.`as`("deadband"), ALARM_RULE.EXCEEDANCE_DURATION.`as`("exceedanceDuration"), ALARM_RULE.SET_COUNT.`as`("setCount"), ALARM_RULE.SET_LEVEL.`as`("setLevel"), ALARM_RULE.SET_CHANGE_RATE.`as`("setChangeRate"), ) val chain = QueryChain.of(deviceDao.deviceStructureMapper) .select(columns) .leftJoin(ALARM_RULE).on(ALARM_RULE.PROPERTY_PATH.eq(DEVICE_STRUCTURE.INPUT)) .leftJoin(DEVICE).on(DEVICE_STRUCTURE.DEVICE_CODE.eq(DEVICE.DEVICE_CODE)) .leftJoin(FACTORY).on(DEVICE.PLANT_NODE_ID.eq(FACTORY.PLANT_NODE_ID)) .leftJoin(ALARM_RULE_CACHE).on(ALARM_RULE_CACHE.REF_ID.eq(ALARM_RULE.ID)) .where(DEVICE_STRUCTURE.DEVICE_CODE.eq(req.param.deviceCode, !req.param.deviceCode.isNullOrEmpty())) .and(DEVICE.DEVICE_NAME.like(req.param.deviceName, !req.param.deviceName.isNullOrEmpty())) .and( QueryCondition.createEmpty() .and(DEVICE.DEVICE_CLASS_NAME.like(req.param.deviceClassName, !req.param.deviceClassName.isNullOrEmpty())) .or(DEVICE.DEVICE_CLASS_CODE.like(req.param.deviceClassName, !req.param.deviceClassName.isNullOrEmpty())) ) .and(FACTORY.PLANT_NODE_NAME.like(req.param.plantNodeName, !req.param.plantNodeName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.GROUP_NAME.like(req.param.groupName, !req.param.groupName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.DISPLAY_NAME.like(req.param.displayName, !req.param.displayName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.ATTRIBUTE_NAME.like(req.param.attributeName, !req.param.attributeName.isNullOrEmpty())) .and(DEVICE_STRUCTURE.INPUT.like(req.param.input, !req.param.input.isNullOrEmpty())) //处理alarmStatus if (!req.param.ruleStatus.isNullOrEmpty()) { val ruleStatusCondition = QueryCondition.createEmpty() if (req.param.ruleStatus!!.contains("notConfig")) { ruleStatusCondition.and(ALARM_RULE.ID.isNull) } if (req.param.ruleStatus!!.contains("alarming")) { ruleStatusCondition.or(ALARM_RULE_CACHE.ALARMING.eq(1)) } if (req.param.ruleStatus!!.contains("enable")) { ruleStatusCondition.or(ALARM_RULE.ID.isNotNull.and(ALARM_RULE_CACHE.ALARMING.eq(0))) } if (req.param.ruleStatus!!.contains("disable")) { ruleStatusCondition.and(ALARM_RULE.ID.isNotNull.and(ALARM_RULE.ENABLE.eq(0))) } chain.and(ruleStatusCondition) } TOSQL: SELECT `alarm_rule`.`id` AS `id`, `device_structure`.`device_code` AS `deviceCode`, `device`.`device_name` AS `deviceName`, `device`.`device_class_name` AS `deviceClassName`, `factory`.`plant_node_name` AS `plantNodeName`, `device_structure`.`group_name` AS `groupName`, `device_structure`.`attribute_name` AS `attributeName`, `device_structure`.`display_name` AS `displayName`, `device_structure`.`input` AS `input`, `alarm_rule`.`enable` AS `enable`, (CASE WHEN `alarm_rule`.`id` IS NULL THEN 'notConfig' ELSE (CASE WHEN `alarm_rule`.`enable` = ? THEN (CASE WHEN `alarm_rule_cache`.`alarming` = ? THEN 'alarming' ELSE 'enable' END) ELSE 'disable' END) END) AS `ruleStatus`, `alarm_rule`.`condition_script` AS `conditionScript`, `alarm_rule`.`ll` AS `ll`, `alarm_rule`.`l` AS `l`, `alarm_rule`.`h` AS `h`, `alarm_rule`.`hh` AS `hh`, `alarm_rule`.`deadband_type` AS `deadbandType`, `alarm_rule`.`deadband` AS `deadband`, `alarm_rule`.`exceedance_duration` AS `exceedanceDuration`, `alarm_rule`.`set_count` AS `setCount`, `alarm_rule`.`set_level` AS `setLevel`, `alarm_rule`.`set_change_rate` AS `setChangeRate` FROM `device_structure` LEFT JOIN `alarm_rule` ON (`alarm_rule`.`property_path` = `device_structure`.`input`) AND `alarm_rule`.`valid` = ? LEFT JOIN `device` ON `device_structure`.`device_code` = `device`.`device_code` LEFT JOIN `factory` ON `device`.`plant_node_id` = `factory`.`plant_node_id` LEFT JOIN `alarm_rule_cache` ON `alarm_rule_cache`.`ref_id` = `alarm_rule`.`id` ORDER BY `alarm_rule`.`id` DESC LIMIT 0, 20 ### 预期结果: SQL正常执行 ### 实际结果: org.springframework.dao.TransientDataAccessResourceException: ### Error querying database. Cause: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set ### The error may exist in com/supcon/pride/fahm/baseinfo/mapper/DeviceStructureMapper.java (best guess) ### The error may involve com.supcon.pride.fahm.baseinfo.mapper.DeviceStructureMapper.selectListByQuery ### The error occurred while executing a query ### SQL: SELECT `alarm_rule`.`id` AS `id`, `device_structure`.`device_code` AS `deviceCode`, `device`.`device_name` AS `deviceName`, `device`.`device_class_name` AS `deviceClassName`, `factory`.`plant_node_name` AS `plantNodeName`, `device_structure`.`group_name` AS `groupName`, `device_structure`.`attribute_name` AS `attributeName`, `device_structure`.`display_name` AS `displayName`, `device_structure`.`input` AS `input`, `alarm_rule`.`enable` AS `enable`, (CASE WHEN `alarm_rule`.`id` IS NULL THEN 'notConfig' ELSE (CASE WHEN `alarm_rule`.`enable` = ? THEN (CASE WHEN `alarm_rule_cache`.`alarming` = ? THEN 'alarming' ELSE 'enable' END) ELSE 'disable' END) END) AS `ruleStatus`, `alarm_rule`.`condition_script` AS `conditionScript`, `alarm_rule`.`ll` AS `ll`, `alarm_rule`.`l` AS `l`, `alarm_rule`.`h` AS `h`, `alarm_rule`.`hh` AS `hh`, `alarm_rule`.`deadband_type` AS `deadbandType`, `alarm_rule`.`deadband` AS `deadband`, `alarm_rule`.`exceedance_duration` AS `exceedanceDuration`, `alarm_rule`.`set_count` AS `setCount`, `alarm_rule`.`set_level` AS `setLevel`, `alarm_rule`.`set_change_rate` AS `setChangeRate` FROM `device_structure` LEFT JOIN `alarm_rule` ON (`alarm_rule`.`property_path` = `device_structure`.`input`) AND `alarm_rule`.`valid` = ? LEFT JOIN `device` ON `device_structure`.`device_code` = `device`.`device_code` LEFT JOIN `factory` ON `device`.`plant_node_id` = `factory`.`plant_node_id` LEFT JOIN `alarm_rule_cache` ON `alarm_rule_cache`.`ref_id` = `alarm_rule`.`id` ORDER BY `alarm_rule`.`id` DESC LIMIT 0, 20 ### Cause: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set ; (conn=5095259) Parameter at position 3 is not set; nested exception is java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:70) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439) at com.sun.proxy.$Proxy124.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147) at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80) at com.mybatisflex.core.mybatis.binding.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:146) at com.mybatisflex.core.mybatis.binding.FlexMapperProxy.invoke(FlexMapperProxy.java:90) at com.sun.proxy.$Proxy129.selectListByQuery(Unknown Source) at com.mybatisflex.core.BaseMapper.selectListByQueryAs(BaseMapper.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.mybatisflex.core.mybatis.binding.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:159) at com.mybatisflex.core.mybatis.binding.FlexMapperProxy.invoke(FlexMapperProxy.java:90) at com.sun.proxy.$Proxy129.selectListByQueryAs(Unknown Source) at com.mybatisflex.core.util.MapperUtil.doPaginate(MapperUtil.java:230) at com.mybatisflex.core.BaseMapper.paginateAs(BaseMapper.java:1160) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.mybatisflex.core.mybatis.binding.MybatisMapperProxy$DefaultMethodInvoker.invoke(MybatisMapperProxy.java:159) at com.mybatisflex.core.mybatis.binding.FlexMapperProxy.invoke(FlexMapperProxy.java:90) at com.sun.proxy.$Proxy129.paginateAs(Unknown Source) at com.mybatisflex.core.query.MapperQueryChain.pageAs(MapperQueryChain.java:180) at com.supcon.pride.fahm.tag.controller.AlarmController.conditionAlarmRulePage(AlarmController.kt:122) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1072) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:965) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) at javax.servlet.http.HttpServlet.service(HttpServlet.java:517) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275) at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:393) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449) at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282) at java.lang.Thread.run(Thread.java:748) Caused by: java.sql.SQLTransientConnectionException: (conn=5095259) Parameter at position 3 is not set at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:309) at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:354) at org.mariadb.jdbc.ClientPreparedStatement.validParameters(ClientPreparedStatement.java:345) at org.mariadb.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:80) at org.mariadb.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:232) at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) at com.mybatisflex.core.mybatis.FlexStatementHandler.query(FlexStatementHandler.java:103) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142) at sun.reflect.GeneratedMethodAccessor131.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:425) ... 92 common frames omitted ### 截图或视频: ### 关联版本: 1.11.3
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
bug
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (1)
标签 (115)
main
v1.11.4
v1.11.3
v1.11.2
v1.11.1
v1.11.0
v1.10.9
v1.10.8
v1.10.7
v1.10.6
v1.10.5
v1.10.4
v1.10.3
v1.10.2
v1.10.1
v1.10.0
v1.9.9
v1.9.8
v1.9.7
v1.9.6
v1.9.5
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.8.9
v1.8.8
v1.8.7
v1.8.6
v1.8.5
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.9
v1.7.8
v1.7.7
v1.7.6
v1.7.5
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.6.9
v1.6.8
v1.6.7
v1.6.6
v1.6.5
v1.6.4
v1.6.3
v1.6.2
v1.6.1
v1.6.0
v1.5.9
v1.5.8
v1.5.7
v1.5.6
v1.5.5
v1.5.4
v1.5.3
v1.5.2
v1.5.1
v1.5.0
v1.4.9
v1.4.8
v1.4.7
v1.4.6
v1.4.5
v1.4.4
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.3.9
v1.3.8
v1.3.7
v1.3.6
v1.3.5
v1.3.4
v1.3.3
v1.3.2
v1.3.1
v1.3.0
v1.2.9
v1.2.8
v1.2.7
v1.2.6
v1.2.5
v1.2.4
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.1.9
v1.1.8
v1.1.7
v1.1.6
v1.1.5
v1.1.4
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.9
v1.0.8
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3
v1.0.2
v1.0.0
v1.0.0-rc.1
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
1
https://gitee.com/mybatis-flex/mybatis-flex.git
git@gitee.com:mybatis-flex/mybatis-flex.git
mybatis-flex
mybatis-flex
MyBatis-Flex
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册