ITOO3.1开发问题汇总(一)
2015-07-31 23:26
323 查看
第一次进入ITOO,第一次见识到整个架构,光搭建环境就出现了很多错误,5个人中3个为新手的我们,着实费了不少功夫,之后进入开发亦是如此。但总得有这个过程,我们在错误中长大,才更加茁壮。但过了一个阶段必须对以前进行总结,颗粒归仓。否则过一段时间就会忘掉,流失了。 这次主要看一下跟数据库相关的知识。
第1个问题:作为基础系统的一员,给其他系统提供必要的数据是必不可少的。但是总不能一条一条的插入吧?即使用sql语句也是如此。经过一番努力,成功找到一个方法:
① 先创建一个存储过程(使用Navicat链接的MySql,创建了1000条)
[/code]
② 然后新建一个查询,调用该存储过程
[/code]
③ 执行时间(1000条数据)
CALL insert_courseInfo();
Affected rows: 1
Time: 42.112s
④ 执行结果
![](https://note.wiz.cn/api/document/files/unzip/a23b4b00-6ecf-4a59-bf2d-d72ad9f40023/c539e841-72f7-4947-8d50-d9f6ad6595b4.751/index_files/216c84c4-4860-435f-8b86-edd99f63ff92.png)
其实主要是对CONCAT函数的使用,它可以将字符串与数字进行结合,非常方便。
第2个问题:删除一条数据之后进行有条件分页模糊查询的时候还能查出来,无条件查询则不会查出来。底层方法应该没问题,但仔细看了看我的有条件分页模糊查询也没啥问题。通过把源代码下载下来,逐步跟踪,终于发现了问题所在:
我现在的代码
[/code]
生成的sql语句
[/code]
问题:
注意生成的sql语句中where后面的条件,and与后面的or应该为一个查询条件,而这条sql语句将会分为两个条件:or和and,这样查出来的数据肯定会查出来isDelete为1的情况。
解决方法
应该给and后面的条件加上括号:(),在代码中的setSelectWhere中字符串用括号()括起来
[/code]
另外一个问题
由于底层已经写上了isDelete=0的查询条件,而且跟着and关键字,如果 setSelectWhere中的内容不写的话,sql语句会报错的。。。写上的话,生成的sql语句会有两个isDelete=0...底层方法封装还是有些不完美~不过已经相当不错了,更多的时候我们直接即可,非常方便。
遇到问题不怕,怕的是一直困在一个思路上,一旦钻了牛角尖,不仅浪费大量的时间,也很影响项目的进展。所以,要给自己规定一定的时间,比如1个小时,如果做不出来就尽快找人。在时间如此紧张的情况下,学习需要放到次席。
第1个问题:作为基础系统的一员,给其他系统提供必要的数据是必不可少的。但是总不能一条一条的插入吧?即使用sql语句也是如此。经过一番努力,成功找到一个方法:
① 先创建一个存储过程(使用Navicat链接的MySql,创建了1000条)
DROP PROCEDURE [code]IF EXISTS insert_courseInfo;
DELIMITER ;
CREATE PROCEDURE insert_courseInfo ()
BEGIN
DECLARE
i INT DEFAULT 0 ;
WHILE i < 1000 DO
INSERT INTO `itoo_platform`.`tb_courseinfo` (
`id`,
`comment`,
`operator`,
`versionEndTime`,
`versionStartTime`,
`isDelete`,
`remark`,
`classHour`,
`classPoint`,
`courseCode`,
`courseName`,
`courseTypeId`,
`institutionId`
)
VALUES
(
CONCAT('23', i),
'吴利昌添加',
'吴利昌',
'2015-07-06 15:49:28',
'2015-07-06 15:49:37',
'0',
'吴利昌添加',
'18',
'4',
CONCAT('05', i),
'材料化学',
'1',
'2'
) ;
SET i = i + 1 ;
END
WHILE ;
END
[/code]
② 然后新建一个查询,调用该存储过程
[code]CALL insert_courseInfo();
[/code]
③ 执行时间(1000条数据)
CALL insert_courseInfo();
Affected rows: 1
Time: 42.112s
④ 执行结果
![](https://note.wiz.cn/api/document/files/unzip/a23b4b00-6ecf-4a59-bf2d-d72ad9f40023/c539e841-72f7-4947-8d50-d9f6ad6595b4.751/index_files/216c84c4-4860-435f-8b86-edd99f63ff92.png)
其实主要是对CONCAT函数的使用,它可以将字符串与数字进行结合,非常方便。
第2个问题:删除一条数据之后进行有条件分页模糊查询的时候还能查出来,无条件查询则不会查出来。底层方法应该没问题,但仔细看了看我的有条件分页模糊查询也没啥问题。通过把源代码下载下来,逐步跟踪,终于发现了问题所在:
我现在的代码
[code]pageEntity.setSelectContent("p.institutionId,p.id,p.institution.institutionName,p.remark,p.maxPeople,p.professionalCode,p.professionalName");
pageEntity.setSelectWhere("p.professionalName like '%" + conditions
+ "%' or p.institution.institutionName like '%" + conditions
+ "%' or p.professionalCode like '%" + conditions + "%' or p.remark like '%"+conditions+"%'");
[/code]
生成的sql语句
[code]SELECT p.institutionId,p.id,p.institution.institutionName,p.remark,p.maxPeople,p.professionalCode,p.professionalName From Professional p where p.isDelete = 0 and p.professionalName like '%化学%' or p.institution.institutionName like '%化学%' or p.professionalCode like '%化学%' or p.remark like '%化学%'
[/code]
问题:
注意生成的sql语句中where后面的条件,and与后面的or应该为一个查询条件,而这条sql语句将会分为两个条件:or和and,这样查出来的数据肯定会查出来isDelete为1的情况。
解决方法
应该给and后面的条件加上括号:(),在代码中的setSelectWhere中字符串用括号()括起来
[code]pageEntity.setSelectContent("p.institutionId,p.id,p.institution.institutionName,p.remark,p.maxPeople,p.professionalCode,p.professionalName");
pageEntity.setSelectWhere("(p.professionalName like '%" + conditions
+ "%' or p.institution.institutionName like '%" + conditions
+ "%' or p.professionalCode like '%" + conditions + "%' or p.remark like '%"+conditions+"%')");
[/code]
另外一个问题
由于底层已经写上了isDelete=0的查询条件,而且跟着and关键字,如果 setSelectWhere中的内容不写的话,sql语句会报错的。。。写上的话,生成的sql语句会有两个isDelete=0...底层方法封装还是有些不完美~不过已经相当不错了,更多的时候我们直接即可,非常方便。
遇到问题不怕,怕的是一直困在一个思路上,一旦钻了牛角尖,不仅浪费大量的时间,也很影响项目的进展。所以,要给自己规定一定的时间,比如1个小时,如果做不出来就尽快找人。在时间如此紧张的情况下,学习需要放到次席。
相关文章推荐
- apue 第14章 高级I/O
- add.fun.php
- hibernate之缓存
- 标签(TabHost)
- 第三方微信授权登录的iOS代码分析
- nutch 学习 过滤器
- 在VM10上安装openfiler初探
- java中UDP传输协议
- [CareerCup] 4.3 Create Minimal Binary Search Tree 创建最小二叉搜索树
- Android 开发新特性
- hdoj 1050 Moving Tables【贪心区间覆盖】
- 【leetcode c++】111 Minimum Depth of Binary Tree
- Mysql之查询、where、常用函数、having
- 转:JRE与JDK的区别详解
- Mac下常用的操作
- Java--类
- Android BuildConfig使用
- 怀旧!Windows最后一款产品Windows 10面世,30年前的它是这样的…
- Spark的TaskScheduler和DagScheduler
- HLSL效果框架实例之高斯模糊