时间:2021-05-20
mysql有个字段是bit,只存储1和0,是二进制存储,那么在java的dao层如何映射成boolean呢
其实就是在底层dao做反射的时候,先判断字段(比如isStandard)的字段类型是否为boolean,如果是,则在查出数据库字段bit 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; }注意这个
resultSet.getBoolean(columnName) 就是转换的方法,具体实现为
核心原理就是根据字符串/数字做对比,如果是1,0就返回true/false,其它的直接返回false或抛出异常,字符串如果是[true, yes, y, on, 1]就返回true,如果是[false, no, n, off, 0]就返回false
以上这篇Java中Boolean与字符串或者数字1和0的转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
目录:1:伪对象2:转换为字符串3:数字转字符串4:转换为数字5:转换为Boolean6:Number()和parseInt()的区别7:String()和to
0与任意非数字(或者说,不可转化为数字的字符)前导的字符串比较(操作符为==),均返回true.原因是,数字与字符串比较时,先尝试将字符串转换为数字,再比较,一
1、转换为字符串''+10==='10';//true将一个值加上空字符串可以轻松转换为字符串类型。2、字符串转换为数字+'010'===10Number('0
本文实例讲述了java实现统计字符串中字符及子字符串个数的方法。分享给大家供大家参考,具体如下:这里用java实现统计字符串中的字符(包括数字、大写字母、小写字
本文实例讲述了java基于正则提取字符串中的数字功能。分享给大家供大家参考,具体如下:使用Java正则可以很方便的从字符串中提取符合条件的内容。1.提取字符串中