今天用xxxExample类进行对数据库内容进行排序操作,遇到了一个比较奇葩的异常,下面我把简单代码和异常信息简要复制一下;
TbContentExample example = new TbContentExample();
if(issort){
example.setOrderByClause("updated DESC");
}
if (count!=0) {
PageHelper.startPage(1, count);
List<TbContent> list = tbContentMapper.selectByExampleWithBLOBs(example);
PageInfo<TbContent> pi = new PageInfo<>(list);
return pi.getList();
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '$orderByClause$' in 'order clause'
### The error may exist in com/ego/mapper/TbContentMapper.xml
### The error may involve com.ego.mapper.TbContentMapper.selectByExampleWithBLOBs-Inline
### The error occurred while setting parameters
### SQL: select id, category_id, title, sub_title, title_desc, url, pic, pic2, created, updated content from tb_content order by $orderByClause$ limit ?,?
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '$orderByClause$' in 'order clause';
bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: **Unknown column '$orderByClause$' in 'order clause',** dubbo version: 2.5.3, current host: 127.0.0.1
看了好半天,查了好久的资料,发现一个比较坑的地方!就是要自己修改逆向工程生成的xxxMapper.xml里面额内容,上述异常信息最重要的就是TbContentMapper.xml中的对应id=selectByExampleWithBLOBs这个标签中有个 $orderByClause$这个东西有问题,截图如下
要修改成下图所示就ok了;
本来一直以为是代码或者dubbo服务没有更新才出错了,自己查了好半天,原来是逆向工程自动生产的配置文件有问题…看来还是要多看异常信息啊!反思反思。。。。。