今天完成的事。
【一,打了一个插入数据功能的包】
不是很复杂的一个包,代码就不贴了。
当我打印了jar包想要用服务器跑一下的时候。
我开始方了,这是啥啊!主函数有的啊!
就是说我找不到主函数。
那我该怎么引导他去找我的主函数呢。百度。

我改了一下还是不行。
而且行了我觉得也不算靠谱,如果每一次打完包再去改数据来确定引导主函数,那也太蠢了。
接着翻文档。
http://blog.csdn.net/cloume/article/details/51969740
被这个文档点醒了。
没有找到入口类(即main函数所在的类),在pom.xml里面加上入口类的配置就好了!
修改pom.xml文件,添加如下配置项即可:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>service.Insert</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
再运行。

每次插入500条数据就会停止,至于为啥那么会停止,这要看今天做的第三件事。
【二,打了一个具有查找功能的包。】
本地测试就不试了。
服务器上跑了一下。

稳的。
【三,建索引和不建索引的效率查别】
我想要搞一个10000000数据的数据库
当我做FOR循环插入10000000的数据(当时是这样天真的想的)

发现100条报错。
没错和今天做的第一件事一样,他不会一直插入。他插到500条就会停止。(其实这个500是可以改变的)
百度了一哈。
原因:因为你的
MySQL安装目录下的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满
解决方式:
打开MYSQL安装目录打开MY.INI找到max_connections(在大约第93行)默认是100 一般设置到500~1000比较合适,重启mysql,这样1040错误就解决啦。
max_connections=1000
具体步骤:
1.Mysql数据库的默认连接数是100。
2.默认值100对于一般的程序都不是很够用,如果只是在自己的电脑上调试程序,有可能发现不了这个问题,因为调试程序时会经常重起Tomcat。
3.如果使用Hibernate框架来进行数据库操作,这个问题尤其明显。
4.解决方法:加大Mysql连接数。在Mysql安装文件中,找到my.ini文件,在里面找到
max-connections=100,将这个100变大一点,直接来个1000算了。
但是后来想了一下,mysql的配置文件我是不想动的(我对装mysql有天生的恐惧),主要是想看一下查找索引的速度嘛不是,我去百度一下怎么直接插入几百万数据。

博客上就抄了一个代码文档。

25秒100w。
我插入300w。
我来针对这个数据库做一个查找工作。

查找的时候发现
我查找一个数据的时候返回的是多行数据。
也就是说我要在mapper里面返回一个”集合“。
知识盲区。
看文档。
重新编写xml文件。

在方法里面加入集合。

我再跑!

疯了。还是报错。
忍一忍。
再看眼报错。
不支持的操作异常。
应该是类型的转换出现问题。



我的mapper返回的是一个User对象。
但是我的mapper映射文件返回的是。

原因就在于resultType代表的是List中的元素类型,而不应该是List本身!!!!
我把返回类型改成User对象试试。

能查到数据,但还会报错。
挺奇怪的,我头一次遇到,为什么可以输出数据依旧报错。
百度了一下好蠢。
数组多循环了一个,越界了。
修改。

终于。

目前数据库没有索引,我打包去跑一哈。

倒是能实现,但是出现了一个尴尬的问题,我该怎么确定它查询的时间的,
mysql数据库是可以显示查询所需要的时间的,但我现在运行一个程序怎么查。
我在程序运行起始的地方做一个输出时间的,再再查找结束之后做一个当前时间的输出
是不是就可以算出查询所用的时间了。我去试试。
我在开始查询程序之间里面加入了。

在查询之后加入了

我再去跑测试。

平均时间是5.2秒。
我去加入一个索引。

再运行程序。

平均时间1秒。提高4秒。
4秒哇,什么概念?四舍五入就是一个亿啊!
遇到的问题
【一,做数据查询的时候报了这个错误。】

翻译一下。
这个问题之前见过,这个解决方法我是有印象的,但是又被绊倒一次。
很耻辱。
想了半个小时,这个句话的意思是我加载了两次UserMapper。
检查,我在mapper,xml文件里面

我在mybatis里面又加载了一次
注释掉。
搞定。
【二,听小课堂引发的思考】
任务一的时候涉及到trycatch的处理,那么我如果用mybatis连接数据库的时候该怎么处理异常呢。
我觉得处理异常的时间应该是打开语句的时候。

但是当我把这个语句放到try里面的时候,下面的方法语句就不能用。


那么该怎么用tyrcatch来处理mybaits链接数据库的异常啊?
还是说mybatis把异常自己在库里处理了呢,不需要我们单纯用JDBC那样做判断了呢?
不懂,明天再研究下,不行问问师兄。
收获
一,熟练打包并运行。
二,明白了索引的强大。
三,还有一些奇奇怪怪的知识点。
明天要做的事
跟师兄商量一下把任务一提交了。开始任务二。
禅道链接 http://task.ptteng.com/zentao/task-view-12459.html
评论