弹出的文件夹选择不需要加入版本控制的文件,然后点击OK,如图:
这样项目的名称就恢复到默认的白色了,如果创建的文件还会变成红色,这是因为文件没有加入cvs,选中文件ctrl + alt + a,改为下图:
发表于: 2018-01-05 22:15:35
1 695
一、今天完成的任务
1、学习分页查询,准备小课堂的相关资料,我的任务实现类似下图的功能
设计思想:现在改成纯利用js进行分页,首先查询出所有记录,初始化通过jquery控制显示首页内容,创建页面切换功能的函数,每次显示固定的内容行并把其他内容行隐藏,这样只需要一次提交就可以实现分页,但是仍有缺点,就是如果数据量很多很多,会严重影响性能
-------合理的想法是每次先取出一部分的内容,比如先去除前30行的内容,等浏览到第31行时再进行一数据库的检索。
SQl 语句-limit----String sql = "select * from tb_Book order by id asc limit ?,?";
这里使用到了 limit 这个 SQL 语句特点
limit arg1,arg2 arg1指定查询记录的起始位置;arg2用于指定查询数据所返回的记录数
select * from tablename limit 0,1
即取出第一条记录。
select * from tablename limit 0,2
取出2条数据 第一条和第二条
select * from tablename limit 1,1
第二条记录
select * from tablename limit 10,20
从第11条到31条(共计20条)
这个 limit 是实现分页的关键,如果每次取出数据库的内容,都要写分页在页面上是怎么去操作实现的,这好像很麻烦。要是每次数据库取出特定页的数据就好了,limit可以实现这样的功能,对数据升序或降序排序后,利用 SQL 取出特定页的数据,直接显示就行了。
当我们显示列表信息的时候,我们常常以分页形式显示,当然在ASP.NET中的ListView和GridView控件等都自带了分页功能,但是效率很低,无法适用大量数据,并且灵活性不高。因而我们一般都使用第三方分页控件或者自己编写分页程序。那么在基于ADO.NET中实现自定义分页的第一步也就是最关键一步必然是要写分页SQL语句,而且语句效率要高。
第一种写法呢是使用NOT IN关键字。--IN 和 NOT IN,效率较低
--查询第11-15条记录,后面的语句即可替换为ADO.NET中执行Command的CommandText
SELECT TOP 5 * FROM LeaveWordView WHERE ID NOT IN(SELECT TOP 10 ID FROM LeaveWordView)
--SELECT TOP PageSize * FROM LeaveWordView WHERE ID NOT IN(SELECT TOP (PageIndex-1)*PageSize ID FROM LeaveWordView)
这条语句的原理是先查询1-10条记录的ID,然后再查询ID不属于这1-10条记录的ID,并且只需要5条记录,因为每页大小就是5,这就是获取到的第11-15条记录,这是非常简单的一种写法。另外IN语句与NOT IN语句类似,这是NOT IN的写法,但是显然达不到我们的需求,因为效率太低。
第二种写法是通过若干次升序与降序实现。
SELECT * FROM(
SELECT TOP 5 * FROM(
SELECT TOP 15 * FROM LeaveWordView ORDER BY ID ASC)
AS TEMP1 ORDER BY ID DESC)
AS TEMP2 ORDER BY ID ASC
这条语句首先查询前15条记录,然后在倒序查询前5条记录(即倒数5条记录),这个时候就已经获取到了11-15条记录,但是他们的顺序是倒序,所以最后又进行升序排序。
第三种写法,采用MAX(ID)函数。
--MIN()函数和MAX()函数的使用
--id > 第(PageIndex-1)*PageSize条记录的id AND id <= 第PageIndex*PageSize条记录的id
SELECT TOP 5 * FROM LeaveWordView WHERE ID>
(SELECT MAX(ID) FROM(SELECT TOP 10 ID FROM LeaveWordView ORDER BY ID) AS TEMP1) --(第10条的id)
这个先把第十条记录的id找出来(当然这里面是直接使用MAX()进行查找,MIN()函数的用法也是类似的),然后再对比取比第十条记录的id大的前5条记录即为我们需要的结果。
最后一种,使用ROW_NUMBER。
--用行号(ROW_NUMBER)查询,比较高效的查询方式。
--SELECT ROW_NUMBER() OVER(ORDER BY ID) AS ROWID FROM LeaveWordView
SELECT * FROM(
SELECT TOP 15 ROW_NUMBER() OVER(ORDER BY ID ASC) AS ROWID,*
FROM LeaveWordView) AS TEMP1
WHERE ROWID>10
在这里面需要注意的是OVER的括号里面可以写多个排序字段,比如:OVER(ORDER BY CreatedTime,ID)。这条语句是查询前15条记录,然后取出ROWID=10以后的记录。
以上是4中常用分页查询语句,其实他们的效率在万级别一下数据的时候,效率相差并不大,但是在处理上百万数据时,毫无疑问我们将选择最后一种方式。
分页的时候,另一个常用的技巧是在LIMIT语句中加上SQL_CALC_FOUND_ROWS提示(hint),这样做可以获得去掉LIMIT以后满足条件的行数,因此可以作为分页的总数。看起来,MySQL做了一些非常高深的优化,像是通过某种方法预测了总行数。但实际上MySQL只有在扫描了所有满足条件的行,然后再抛弃掉不需要的行,而不是在满足LIMIT的行数后就终止扫描。所有该提示的代价可能非常高。
一个更好的设计是将具体的页面换成“下一页”按钮,假设煤业显示20条记录,那么我们每次查询都是用LIMIT返回21条记录并只显示20条,如果第21条存在,那么我们就显示“下一页”按钮,否则就说明没有更多的数据,也就无需显示“下一页”按钮了。
2、晚上利用时间又去修改mybatis和spring整合的东西,把整合的配置文件spring-mybatis.xml里面理解了一会,再与db.properties搭上,用mybatis-generator重新生成了我想要的表相对应的mapper.xml,对自己的application.xml与师兄们的mybatis-config.xml对比,没有找到语句去application.xml。
继续学习springmvc,复习springioc。
三、遇到的问题
我看着这红色感叹号就想干掉他,但是每次干掉重新update 他还是红色的,
打开文件夹里面的文件又全部是绿色的。。怎么破。。看着真纠结
解决办法:查看隐藏文件,然后删除 . svn,删除操作。
2、idea如果当前project用了版本控制器,其下面新建的所有的项目默认都是加入到版本控制里面,所以项目名称和文件都是红色的,如图:
弹出的文件夹选择不需要加入版本控制的文件,然后点击OK,如图:
这样项目的名称就恢复到默认的白色了,如果创建的文件还会变成红色,这是因为文件没有加入cvs,选中文件ctrl + alt + a,改为下图:
评论