gpt4 book ai didi

java - 在 iBatis resultMap 中返回常量

转载 作者:行者123 更新时间:2023-11-30 05:00:53 24 4
gpt4 key购买 nike

我设置了一个 resultMap,其中包含许多结果元素。我希望能够设置一个常量作为结果之一。所以而不是

<result property="name" column="Name"/>

我希望能够确保该名称将作为字符串“Joe”返回。在理想的情况下,我会更改查询以返回此常量,但不幸的是,这对我来说不是一个选择。我扫描了 iBatis dtd,但无法找到合适的属性。我知道我可以迭代从 iBatis 返回的列表,但我更希望能够在 iBatis 映射中执行此操作。谢谢

最佳答案

YesNoTypeHandler.java 与 Mybatis 3 兼容:

ABC-sqlmaps.xml

<resultMap id="resultMapABC" class="com.abc.dto.ABC">
...
<result property="isA" column="is_a" typeHandler="YesNoTypeHandler"/>
...
</resultMap>

ibatis.xml

<sqlMapConfig>
...
<typeAlias alias="YesNoTypeHandler" type="com.abc.dao.sqlmap.YesNoTypeHandler"/>
<typeHandler javaType="boolean" jdbcType="BOOLCHAR" callback="YesNoTypeHandler"/>
...
</sqlMapConfig>




import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;

public class YesNoTypeHandler implements TypeHandler {

@Override
public void setParameter(PreparedStatement paramPreparedStatement, int paramInt, Object paramObject, JdbcType paramJdbcType) throws SQLException {
if (paramObject == null) {
paramPreparedStatement.setString(paramInt, "N");
}
else {
Boolean value = (Boolean) paramObject;

paramPreparedStatement.setString(paramInt, value ? "Y" : "N");
}
}


@Override
public Object getResult(ResultSet getter, String columnLabel) throws SQLException {
String value = getter.getString(columnLabel);
if (getter.wasNull()) { return false; }
return "Y".equalsIgnoreCase(value);

}

@Override
public Object getResult(CallableStatement cs, int columnNb) throws SQLException {
String value = cs.getString(columnNb);
if (cs.wasNull()) { return false; }
Boolean BoolValue = "Y".equalsIgnoreCase(value);
return BoolValue;
}
}

关于java - 在 iBatis resultMap 中返回常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com