全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java中Boolean与字符串或者数字1和0的转换实例

mysql有个字段是bit,只存储1和0,是二进制存储,那么在java的dao层如何映射成boolean呢

@Column(name="is_standard")
private boolean isStandard;

public void setIsStandard(boolean isStandard){
 this.isStandard = isStandard;
}

public boolean getIsStandard(){
 return isStandard;
}

其实就是在底层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;
 }

注意这个

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中Boolean与字符串或者数字1和0的转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# Boolean与字符串或者数字转换  # java实现字符串和数字转换工具  # Java字符串数字左右补全0的四种方式  # 你知道Java判断字符串是否为数字的多种方式吗  # java Scanner输入数字、字符串过程解析  # JAVA中字符串如何与整型数字相加  # java实现统计字符串中大写字母  # 小写字母及数字出现次数的方法示例  # JAVA 统计字符串中中文  # 英文  # 数字  # 空格  # 特殊字符的个数  # java字符串转数字及各种数字转字符串的3种方法  # 给大家  # 有个  # 希望能  # 这篇  # 则在  # 抛出  # 小编  # 大家多多  # 就是在  # fieldList  # getAllFields  # ResultSetMetaData  # rsmd  # MappingAnnotationUtil  # Exception  # throws  # clazz  # Field  # ArrayList  # dataList 


相关文章: 建站之星代理如何获取技术支持?  宝塔面板如何快速创建新站点?  网站制作新手教程,新手建设一个网站需要注意些什么?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  h5网站制作工具有哪些,h5页面制作工具有哪些?  盘锦网站制作公司,盘锦大洼有多少5G网站?  网页设计网站制作软件,microsoft office哪个可以创建网页?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  如何在企业微信快速生成手机电脑官网?  海南网站制作公司有哪些,海口网是哪家的?  如何解决ASP生成WAP建站中文乱码问题?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  个人摄影网站制作流程,摄影爱好者都去什么网站?  临沂网站制作企业,临沂第三中学官方网站?  如何通过VPS搭建网站快速盈利?  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何在IIS中配置站点IP、端口及主机头?  如何在阿里云高效完成企业建站全流程?  定制建站是什么?如何实现个性化需求?  制作网站的公司有哪些,做一个公司网站要多少钱?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  宝塔新建站点为何无法访问?如何排查?  寿县云建站:智能SEO优化与多行业模板快速上线指南  建站上传速度慢?如何优化加速网站加载效率?  如何通过虚拟主机快速完成网站搭建?  ,怎么用自己头像做动态表情包?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  php json中文编码为null的解决办法  如何通过虚拟主机快速搭建个人网站?  ,在苏州找工作,上哪个网站比较好?  如何彻底删除建站之星生成的Banner?  如何解决VPS建站LNMP环境配置常见问题?  建站之星后台密码遗忘?如何快速找回?  如何在IIS管理器中快速创建并配置网站?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  如何制作一个表白网站视频,关于勇敢表白的小标题?  山东网站制作公司有哪些,山东大源集团官网?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  模具网站制作流程,如何找模具客户?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何用狗爹虚拟主机快速搭建网站?  香港服务器租用费用高吗?如何避免常见误区?  nginx修改上传文件大小限制的方法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。