当前使用版本 3.5.1 当前环境信息 Java8 + Mysql5.7

描述bug现象 org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1

提供问题复现步骤 name模糊搜索

提供完整堆栈日志(可选) org.springframework.jdbc.BadSqlGrammarException:

Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1

The error may exist in com/bgkj/system/dict/mapper/SysDictTypeMapper.java (best guess)

The error may involve defaultParameterMap

The error occurred while setting parameters

SQL: SELECT count(0) FROM sys_dict_type WHERE name LIKE CONCAT('%', ?, '%')

Cause: org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1

; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: could not determine data type of parameter $1 at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) at com.sun.proxy.$Proxy152.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:77) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) at com.sun.proxy.$Proxy258.selectList(Unknown Source) at sun.reflect.GeneratedMethodAccessor224.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationInterceptor.invoke(DynamicDataSourceAnnotationInterceptor.java:50) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) at com.sun.proxy.$Proxy260.selectList(Unknown Source)

提供问题复现工程(可选)

import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.bgkj.common.core.annotation.Correlation; import com.bgkj.common.core.annotation.Excel; import com.bgkj.common.core.constant.basic.OperateConstants; import com.bgkj.common.core.web.entity.base.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE; import static com.bgkj.system.api.constant.MergeConstants.DICT_DATA_GROUP;

/* * 字典类型 持久化对象 * * @author bgkj / @Data @EqualsAndHashCode(callSuper = true) @TableName(value = "sys_dict_type", excludeProperty = {"delFlag"}) public class SysDictTypePo extends BaseEntity {

private static final long serialVersionUID = 1L;

/** 字典类型 */
@Excel(name = "字典类型")
@NotBlank(message = "字典类型不能为空")
@Size(max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
@Correlation(groupName = DICT_DATA_GROUP, keyType = OperateConstants.SubKeyType.MAIN)
@TableField(updateStrategy = FieldStrategy.NEVER)
protected String code;

/** 名称 */
@TableField(condition = LIKE)
@NotBlank(message = "字典名称不能为空")
@Size(max = 100, message = "字典名称长度不能超过100个字符")
protected String name;

} 请尽量提供复现工程,减少大家排错的时间.

Comment From: miemieYaho

这是字符串,你长了手可以自己改的

Comment From: qiang-fan

/ * SQL 比较条件常量定义类 * * @author hubin * @since 2018-01-05 */ public class SqlCondition { / * 等于 / public static final String EQUAL = "%s=#{%s}"; / * 不等于 / public static final String NOT_EQUAL = "%s<>#{%s}"; /* * % 两边 % / public static final String LIKE = "%s LIKE CONCAT('%%',#{%s},'%%')";

/**
 * % 两边 % [oracle使用]
 */
public static final String ORACLE_LIKE = "%s LIKE CONCAT(CONCAT('%%',#{%s}),'%%')";
/**
 * % 左
 */
public static final String LIKE_LEFT = "%s LIKE CONCAT('%%',#{%s})";
/**
 * 右 %
 */
public static final String LIKE_RIGHT = "%s LIKE CONCAT(#{%s},'%%')";

}

都定制了一个 oracle使用 的 为啥不加一个 兼容 PG使用的