Mybatis为啥会从数据库读取出NULL来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis为啥会从数据库读取出NULL来相关的知识,希望对你有一定的参考价值。

参考技术A 首先换数据库,mysql处理这个数量级数据比较吃力。推荐你用DB2 或ORACLE

如果不能换,检查一下存储引擎用InnoDB,如果是,检查
innodb_flush_log_at_trx_commit 这个选项,是否是1
如果是1 用SET AUTOCOMMIT = 0 ,提高数据修改速度

php优化需要
MySQL Slow Log 分析工具分析日志:mysqldumpslow或mysqlsla比较不错。

Explain/ DESC 分析SQL 的执行情况和SHOW PROCESSLIST
使用SHOW PROCESSLIST 看是否有锁表情况,
设置 my.cnf 中的long-query-time 和log-slow-queries 记录服务器那些SQL执行速度比较慢

根据上述情况查看对对应的SQL语句进行优化

优化服务器性能,用RAID5(SAN),加内存本身的升级,提高硬盘I/O性能。

数据库总体性能优化:
数据表最好能拆成小表。
数据库切片,分到不用的服务器上,

数据库访问性能优化
修改my.cnf, 下面是影响比较大的:
innodb_flush_log_at_trx_commit 设置为0

如果比下面值大就不用调整了:
query_cache_size 设置为16M
sort_buffer_size 设置为16M
record_buffer 设置为16M
key_buffer_size 设置为8M
innodb_buffer_pool_size 设置为32M

下面是建议设置的
table_cache 设置为512
read_buffer_size 设置为16M
myisam_sort_buffer_size设置为16M
innodb_additional_mem_pool_size 设置为128M
innodb_log_file_size 设置为256M
innodb_log_buffer_size设置为8M

数据库表优化,
1 建立相应的INDEX
2 统一编码,MySQL的默认编码是Latin1,不支持中文,需要把数据库的默认编码修改为gbk或者utf8
show variables like 'character%' 查看

另外表的编码也要与数据库统一

为啥用poi读取excel 的数字全是double

这是正常的。

    通过POI取出的数值默认都是double,即使excel单元格中存的是1,取出来的值也是1.0,这就造成了一些问题,

    如果数据库字段是int,那么就会wrong data type,所以需要对数值类型处理。


代码如下:


Cell cell = null;// 单元格  

Object inputValue = null;// 单元格值  

if(!isEmpty(cell) && cell.getCellType() == Cell.CELL_TYPE_NUMERIC)   

    long longVal = Math.round(cell.getNumericCellValue());  

    if(Double.parseDouble(longVal + ".0") == doubleVal)  

        inputValue = longVal;  

    else  

        inputValue = doubleVal;  

  

       这么处理后,单元格中的小数没有变化,如果是整数,也会取到整数。

参考技术A 以下链接供自修^_^
http://blog.csdn.net/yiyi_wx/archive/2008/10/27/3160482.aspx
http://wenku.baidu.com/view/0a8bc0db6f1aff00bed51e9c.html
http://faq.csdn.net/read/200362.html本回答被提问者和网友采纳

以上是关于Mybatis为啥会从数据库读取出NULL来的主要内容,如果未能解决你的问题,请参考以下文章

当 CPU 尝试读取由 GPU 初始化的托管内存时,为啥数据会从主机迁移到设备?

java中mybatis动态传值,Map中的key与sql语句大小写差一个,但是并不报错,只是不出数据,这是为啥?

为啥mysql数据库对应的字段有数据但是使用mybatis取出是0 或null

为啥 GCC 生成的代码会从堆栈中读取垃圾?

mybatis 空字符串 为啥变为null

为啥用poi读取excel 的数字全是double