当前使用版本(必须填写清楚,否则不予处理)

3.3.1

该问题是怎么引起的?(最新版上已修复的会直接close掉)

测试 demo

`@Data @TableName(value = "type_entity", autoResultMap = true) public class TypeEntity implements Serializable {

/**
 * Id
 */
@TableId
private String id;

/**
 * Name
 */
private String name;

/**
 * Status
 */
@TableField(jdbcType = JdbcType.BIT, typeHandler = CustomBooleanHandler.class)
private boolean status;

}`

`@Slf4j @MappedTypes({Boolean.class}) @MappedJdbcTypes({JdbcType.BIT}) public class CustomBooleanHandler extends BaseTypeHandler {

@Override
public void setParameter(PreparedStatement ps, int i, Boolean parameter, JdbcType jdbcType) throws SQLException {
    log.info("setParameter 被调用了...");
    super.setParameter(ps, i, parameter, jdbcType);
}

@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, Boolean aBoolean, JdbcType jdbcType) throws SQLException {
    log.info("setNonNullParameter 被调用了...");
}

@Override
public Boolean getNullableResult(ResultSet resultSet, String s) throws SQLException {
    log.info("getNullableResult(ResultSet resultSet, String s) 被调用了...");
    return null;
}

@Override
public Boolean getNullableResult(ResultSet resultSet, int i) throws SQLException {
    log.info("getNullableResult(ResultSet resultSet, int i) 被调用了...");
    return null;
}

@Override
public Boolean getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
    log.info("getNullableResult(CallableStatement callableStatement, int i) 被调用了...");
    return null;
}

}`

`@Mapper public interface TypeEntityMapper extends BaseMapper { }

public interface TypeEntityService extends IService { }

@Service public class TypeEntityServiceImpl extends ServiceImpl implements TypeEntityService { }

`

重现步骤

@Test public void insert() { TypeEntity typeEntity = new TypeEntity(); typeEntity.setId("1"); typeEntity.setName("xxxxx"); typeEntity.setStatus(false);

    typeEntityService.save(typeEntity);

}

报错信息

org.springframework.jdbc.BadSqlGrammarException:

Error updating database. Cause: java.sql.SQLException: No value specified for parameter 3

The error may exist in com/helsing/van/beeranalysis/mybatis/mapper/TypeEntityMapper.java (best guess)

The error may involve com.helsing.van.beeranalysis.mybatis.mapper.TypeEntityMapper.insert-Inline

The error occurred while setting parameters

SQL: INSERT INTO type_entity ( id, name, status ) VALUES ( ?, ?, ? )

Cause: java.sql.SQLException: No value specified for parameter 3

; bad SQL grammar []; nested exception is java.sql.SQLException: No value specified for parameter 3

Comment From: VanHelxing

setParameter 方法忘了将 Boolean 转成输值 set了,导致ps设置参数时,始终设置失败.