全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何正确选择百度移动适配建站域名?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  大连网站设计制作招聘信息,大连投诉网站有哪些?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  建站之星代理如何获取技术支持?  制作公司内部网站有哪些,内网如何建网站?  如何快速完成中国万网建站详细流程?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  MySQL查询结果复制到新表的方法(更新、插入)  如何制作一个表白网站视频,关于勇敢表白的小标题?  建站之星微信建站一键生成小程序+多端营销系统  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何高效生成建站之星成品网站源码?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何续费美橙建站之星域名及服务?  全景视频制作网站有哪些,全景图怎么做成网页?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  如何选择靠谱的建站公司加盟品牌?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Python文件管理规范_工程实践说明【指导】  如何通过建站之星自助学习解决操作问题?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  做企业网站制作流程,企业网站制作基本流程有哪些?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  音乐网站服务器如何优化API响应速度?  如何在万网自助建站平台快速创建网站?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何用好域名打造高点击率的自主建站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  如何在Windows虚拟主机上快速搭建网站?  c# 服务器GC和工作站GC的区别和设置  建站之星代理平台如何选择最佳方案?  Java解压缩zip - 解压缩多个文件或文件夹实例  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  北京的网站制作公司有哪些,哪个视频网站最好?  定制建站是什么?如何实现个性化需求?  公司网站的制作公司,企业网站制作基本流程有哪些? 

您的项目需求

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