Mybatis-Plus一个新的报错:数据库表名与SQL的关键字冲突!!!

老规矩先上报错信息:

2021-08-27 19:18:19.510 ERROR 33476 --- [nio-9000-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database.  Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error.
### The error may exist in com/neu/edu/cloudfactoryplus/dao/OrderMapper.java (best guess)
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error.] with root causejava.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order  WHERE  deleted=0AND o_name LIKE '%%' ) TOTAL' at line 1at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.26.jar:8.0.26]at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.26.jar:8.0.26]at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953) ~[mysql-connector-java-8.0.26.jar:8.0.26]at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003) ~[mysql-connector-java-8.0.26.jar:8.0.26]at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) ~[HikariCP-4.0.3.jar:na]at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:56) ~[mybatis-3.4.6.jar:3.4.6]at com.sun.proxy.$Proxy113.executeQuery(Unknown Source) ~[na:na]at com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.queryTotal(PaginationInterceptor.java:199) ~[mybatis-plus-extension-3.0.5.jar:na]at com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor.intercept(PaginationInterceptor.java:168) ~[mybatis-plus-extension-3.0.5.jar:na]at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) ~[mybatis-3.4.6.jar:3.4.6]at com.sun.proxy.$Proxy112.prepare(Unknown Source) ~[na:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) ~[mybatis-3.4.6.jar:3.4.6]at com.sun.proxy.$Proxy112.prepare(Unknown Source) ~[na:na]at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:85) ~[mybatis-3.4.6.jar:3.4.6]at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) ~[mybatis-3.4.6.jar:3.4.6]at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326) ~[mybatis-3.4.6.jar:3.4.6]at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) ~[mybatis-3.4.6.jar:3.4.6]at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) ~[mybatis-3.4.6.jar:3.4.6]at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83) ~[mybatis-3.4.6.jar:3.4.6]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) ~[mybatis-3.4.6.jar:3.4.6]at com.sun.proxy.$Proxy111.query(Unknown Source) ~[na:na]at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148) ~[mybatis-3.4.6.jar:3.4.6]at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.6.jar:3.4.6]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ~[mybatis-spring-1.3.2.jar:1.3.2]at com.sun.proxy.$Proxy66.selectList(Unknown Source) ~[na:na]at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230) ~[mybatis-spring-1.3.2.jar:1.3.2]at com.baomidou.mybatisplus.core.override.PageMapperMethod.executeForMany2(PageMapperMethod.java:128) ~[mybatis-plus-core-3.0.5.jar:na]at com.baomidou.mybatisplus.core.override.PageMapperMethod.execute(PageMapperMethod.java:98) ~[mybatis-plus-core-3.0.5.jar:na]at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:64) ~[mybatis-plus-core-3.0.5.jar:na]at com.sun.proxy.$Proxy79.selectPage(Unknown Source) ~[na:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.9.jar:5.3.9]at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.9.jar:5.3.9]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.9.jar:5.3.9]at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.9.jar:5.3.9]at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.9.jar:5.3.9]at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.9.jar:5.3.9]at com.sun.proxy.$Proxy80.selectPage(Unknown Source) ~[na:na]at com.neu.edu.cloudfactoryplus.controller.OrderController.getOrderList(OrderController.java:63) ~[classes/:na]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_302]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_302]at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_302]at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_302]at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.9.jar:5.3.9]at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.9.jar:5.3.9]at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1064) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.9.jar:5.3.9]at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.9.jar:5.3.9]at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.50.jar:4.0.FR]at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.9.jar:5.3.9]at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.50.jar:4.0.FR]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.50.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.9.jar:5.3.9]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.9.jar:5.3.9]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.9.jar:5.3.9]at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.9.jar:5.3.9]at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) [tomcat-embed-core-9.0.50.jar:9.0.50]at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.50.jar:9.0.50]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_302]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_302]at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.50.jar:9.0.50]at java.lang.Thread.run(Thread.java:748) [na:1.8.0_302]

真是好长一串,在这么长的报错信息中我们提取一下有用的信息:

ERROR 33476 — [nio-9000-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:

这是Spring报错的部分,这句话的大概意思是映射出了问题,那么映射的几个常见问题是:

  1. controller层没有加@RestController
  2. Service层实现类未添加注解@Autowired
  3. @RestController使用成了@Controller
  4. Mapper文件上的@Repository
  5. 还有就是实体类与传来的参数不符,比如:由于实体类中type是string类型,而mapper文件中却把type当成数字进行了判断,字符串是不能进行 != 0

但是经过与其他的类仔细比对,发现以上的问题并没有出现,那么就该往下看看报错信息了


Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error.

The error may exist in com/neu/edu/cloudfactoryplus/dao/OrderMapper.java (best guess)

The error may involve defaultParameterMap

The error occurred while setting parameters

Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error.] with root cause

这个应该是Mybatis-Plus的报错信息,是根据SQL的错误报错的,大概意思是说告诉你也许大概可能差不多在com/neu/edu/cloudfactoryplus/dao/OrderMapper.java 这里出现了问题,这个很明显是这个类出的问题吗(写到这里程序不对了,肯定是这里啊)。但是人家也说了《(best guess)》最大的猜测是这里,具体是哪不清楚,这么草率的报错上次遇到还是在数据库中的存储过程中。。。。。


java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order WHERE deleted=0

就剩这么一个看的报错了,也正是这句话暴露了错误的所在!!!

报错信息提示:我的SQl语法有错误!???这不是Mybatis-Plus自动生成的SQL语句吗?还能语法出错?往后看,错误出现在《order where deleted=0》附近。后面是逻辑删除,where是关键字,那就生一个Order了?

这个时候我灵光一闪,这个order不会是关键字吧?是关键字的话,查询条件就肯定不对了,我赶紧上网一查,果然。。。。

这是所有SQL的关键字,也是感谢这位老哥的分享!!!!

所以大家以后起表名悠着一点吧!!!点个赞(^▽^)

Mybatis-Plus一个新的报错:数据库表名与SQL的关键字冲突!!!相关推荐

  1. MySQL配置大小写敏感报错_mysql表名大小写敏感 - xbuding: watch and learn! - OSCHINA - 中文开源技术交流社区...

    在ubuntu下安装的mysql版本是 5.6.25-0ubuntu1 linux下的mysql的表名是大小写敏范的.而在在windows下安装的mysql是大小写不敏感的. 原因是因为lower_c ...

  2. mybatis 动态字段与表中不一样_mybatis创建一个或多个新用户 insert 字段和表名不确定时动态添加问题...

    创建用户: /** * 创建一个或多个新用户 insert 字段和表名不确定时动态添加 */ @Test public void createAccount() { String lineColumn ...

  3. mysql1055_MySQL5.7 group by新特性报错1055的解决办法

    项目中本来使用的是mysql5.6进行开发,切换到5.7之后,突然发现原来的一些sql运行都报错,错误编码1055,错误信息和sql_mode中的"only_full_group_by&qu ...

  4. 数据库中,把角色的权限授权给用户总是报错,角色名附近有语法错误的原因

    摘要:微信搜索[三桥君] 软件:Sql server 2014 一.问题 数据库中,使用GRANT<角色>TO<用户>,把角色的权限授权给用户总是报错,角色名附近有语法错误的原 ...

  5. MyBatis多个接口参数报错:Available parameters are [0, 1, param1, param2], 及解决方法

    MyBatis多个接口参数报错:Available parameters are [0, 1, param1, param2], 及解决方法 参考文章: (1)MyBatis多个接口参数报错:Avai ...

  6. Unity打开新项目报错

    如下图所示,第一次打开项目的时候报错, 内容大致为: FileNotFoundException: Could not find file "D:\GithubProjects\Naviga ...

  7. GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法

    更多信息请关注 个人网站 一.背景 在有些时候,比如在一个项目中,产品的代码是java代码仓,自动化测试脚本是python语言,单独存放的代码仓,在使用GitlabCICD构建流水线的时候有这样一种场 ...

  8. oracle以查询多括号报错,oracle 表查询二

    1.使用逻辑操作符号 问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J? select * from emp where (sal > 500 o ...

  9. 记录SpringJdbc连接Oracle报错:ORA-00923: 未找到要求的 FROM 关键字

    连接数据库一直报错:ORA-00923: 未找到要求的 FROM 关键字 一直核对SQL,各种操作,无用.. 检查SQL语句语法是否正确: 检查SQL语句中是否包含特殊字符: 检查SQL语句结尾是否包 ...

最新文章

  1. 机器人带陀螺仪走钢丝_Sphero RVR 一个无所不能的可编程机器人!
  2. 算力觉醒后,智慧距离勃发就只差一个想法
  3. Ajax Control Toolkit 32个服务器端控件
  4. idhttpserver的使用方法
  5. 【PAT乙级】1063 计算谱半径 (20 分)
  6. 【WebRTC专场】WebRTC的下个10年,又会有怎样的惊喜?
  7. 三维重建:点绕特定轴旋转公式
  8. 怎么样用System.out.println在控制台打印出颜色
  9. 淘宝客网站赚钱攻略浅谈
  10. 第二篇 ( wcf 与 android 图片上传下载)
  11. js在以div添加滚动条
  12. Atitit 品牌之道 attilax著 艾龙 著 1. 第1章 品牌和品牌管理 1 2. 第Ⅱ篇 制定品牌战略 2 3. 第Ⅲ篇 品牌营销活动:设计与执行 2 4. 第Ⅳ篇 评估和诠释品牌绩效 3
  13. E-Prime教程 | 打mark标记
  14. transcad安装教程_TransCAD免安装版
  15. Maven依赖冲突避坑指北
  16. php后端程序员58同城,后端开发 PHP等 高新区javaWeb
  17. 过滤数组的方法filter()
  18. Java学习-面向对象进阶二
  19. 通过 ffmpeg 无损剪切与拼接视频方法
  20. 栅栏密码(The Rail-Fence Cipher)

热门文章

  1. 编程珠玑第二章习题答案
  2. 使用librosa计算pcen
  3. 多模型不仅是不同的初始化值会得到不同状态(多态微调结构网络)
  4. Django实战之开发面向用户的界面
  5. Django的前世今生
  6. kafka0.11.0.2安装 笔记
  7. Linux下Tomcat的启动、关闭、杀死进程
  8. java解析页面table表格内容导出为excel
  9. struts2+hibernate-jpa+Spring+maven 整合(1)
  10. GridView 72般绝技(转载)