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小时内与您取得联系。