(一)如何解决 unexpected token: 1 near line 1, column 14 [SELECT count(1) FROM XXX ?

我在在线用户日志业务层(service)中写sql语句时发现控制台报错。
我的需求是写一个根据在线用户查所有条数
于是我的sql语句就是

String hql= SELECT COUNT(*) FROM user_list WHERE online_user = '0'

在数据库中执行是ok的
在这里插入图片描述
但是在后台运行起来就报这个错误

unexpected token: 1 near line 1, column 14 [SELECT count(1) FROM XXX

处理方法:
1、看到报错我找到了相应位置,检查下语句是否有问题,发现在数据库中是没有问题的。
2、String hql 替换成String sql同样报错,发现和这个没有关系

网上查找的资料:

任何程序都需要对数据进行查询和修改。而数据一般存储在数据库中,所以就要从数据库中取数据。
从数据库中取出数据以后,这些数据要以什么方式存储,以便在各个方法或者说处理过程中传输是必定遇到的问题,如果是简单的小量数据,那么可能拿到数据就直接进行修改,然后返送回数据库。
在处理过程中,从数据库提取的数据,经常会遇到这种情况:有一些数据是组成某种信息体的部分,如果将其放在一起显得结构更为严谨,如用户的姓名,年龄,性别等组成了个人资料。通常在大系统中,将数据组织成个人资料的形式会更好,更有利传输以及逻辑设计,也更易于理解,那么我们就会把从数据库提取的相对独立的信息组成一个类。
这时又面临一个问题。那就是,当这个类中的信息修改完后,再分离地对这些信息存储会显得比较麻烦。而且思路又从统一整体变的破碎。
那有没有什么工具,可以替我们处理这些繁琐的操作,使得从数据库提取的数据自动地组织成某个对象,然后我们对对象进行修改之后,直接对对象进行保存就可以对应地修改数据库中的数据呢。有,hibernate做的就是这件事。
最简单的情况下,hibernate把数据表的数据段映射到类的属性上,那么这个数据表的定义本身就对应于一个类的定义,而每一个数据行将映射成该类的一个对象。
从数据库提取的数据会自动按你设置的映射要求封装成特定的对象。之后你就可以通过对对象进行操作来修改数据库中的数据。这时候你面对的不是信息的碎片,而是一个形象鲜明的对象。
所以hibernate就是通过将数据表和实体类之间的映射,使得对对象的修改对应数据行的修改,使得程序更符合面向对象思维,并简化工作,使逻辑结构更清晰。

hibernate:是一个采用ORM机制持久层的开源框架;核心思想:ORM是将表与表之间的操作,映射成对象和对象之间的操作,这样简化了持久层的代码,减轻了程序员的负担

3、所以查询语句(select)from后面接的不是表名称,而是java bean数据对象名。

String hql="FROM UserList WHERE onlineUser = '1'";

发现成功了。
所以以后如果在使用hibernate时,在写select语句要记住from后面接的不是表名称,而是映像名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值