
下面的编辑器将为您提供Java中布尔和字符串或数字1和0之间的转换示例. 编辑认为这很好,因此我将与您分享并提供参考. 让我们一起关注小编,看看
mysql的bit字段仅存储1和0java 字符转数字,这是二进制存储java 字符转数字,因此如何将其映射到java的dao层中的布尔值

@Column(name="is_standard")
private boolean isStandard;
public void setIsStandard(boolean isStandard){
this.isStandard = isStandard;
}
public boolean getIsStandard(){
return isStandard;
}
实际上,在对底部dao进行反射时,首先确定该字段的字段类型(例如isStandard)是否为布尔值,如果是,则在检测到字段位is_standard时将其转换为

private List<T> populateData(ResultSet resultSet, Class<T> clazz) throws Exception {
List<T> dataList = new ArrayList<T>();
List<Field> fieldList = MappingAnnotationUtil.getAllFields(clazz);
ResultSetMetaData rsmd = resultSet.getMetaData();
int columnsCount = rsmd.getColumnCount();
List<String> columnNameList = new ArrayList<String>();
for(int i = 0; i < columnsCount; i++){
columnNameList.add(rsmd.getColumnLabel(i+1).toLowerCase());
}
while (resultSet.next()) {
T bean = clazz.newInstance();
for(Field f : fieldList) {
String columnName = MappingAnnotationUtil.getDBCloumnName(clazz, f).toLowerCase();
if(columnNameList.contains(columnName)) {
Object columnValueObj = null;
Class<> filedCls = f.getType();
if(filedCls == int.class || filedCls == Integer.class) {
columnValueObj = resultSet.getInt(columnName);
} else if(filedCls == String.class) {
columnValueObj = resultSet.getString(columnName);
} else if(filedCls == boolean.class || filedCls == Boolean.class) {
columnValueObj = resultSet.getBoolean(columnName);
} else if(filedCls == byte.class || filedCls == Byte.class) {
columnValueObj = resultSet.getByte(columnName);
} else if(filedCls == short.class || filedCls == Short.class) {
columnValueObj = resultSet.getShort(columnName);
} else if(filedCls == long.class || filedCls == Long.class) {
columnValueObj = resultSet.getLong(columnName);
} else if(filedCls == float.class || filedCls == Float.class) {
columnValueObj = resultSet.getFloat(columnName);
} else if(filedCls == double.class || filedCls == Double.class) {
columnValueObj = resultSet.getDouble(columnName);
} else if(filedCls == BigDecimal.class) {
columnValueObj = resultSet.getBigDecimal(columnName);
}
else {
columnValueObj = resultSet.getObject(columnName);
}
if (columnValueObj != null) {
Method setterMethod = MappingAnnotationUtil.getSetterMethod(clazz, f);
setterMethod.invoke(bean, new Object[] { columnValueObj });
}
}
}
dataList.add(bean);
}
return dataList;
}
请注意

else if(filedCls == boolean.class || filedCls == Boolean.class) {
columnValueObj = resultSet.getBoolean(columnName);
}
resultSet.getBoolean(columnName)是转换方法,具体实现是

for (int i = 0; i < trueStrings.length; ++i) {
if (trueStrings[i].equals(stringValue)) {
return type.cast(Boolean.TRUE);
}
}
for (int i = 0; i < falseStrings.length; ++i) {
if (falseStrings[i].equals(stringValue)) {
return type.cast(Boolean.FALSE);
}
}

核心原理是基于字符串/数字进行比较,如果为1,0,则返回true / false,其他则直接返回false或引发异常,如果字符串为[true,yes,y,on ,1]返回true,如果为[false,no,n,off,0],则返回false
上面的Java中布尔和字符串或数字1和0的转换示例是我与您共享的所有内容. 我希望能给您参考,也希望您能支持我们.
本文标题: Java中的布尔值和字符串或数字1和0转换示例
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-259023-1.html
太完美了