关于通过id查询记录的一些总结

最近在做一个oa系统,简化了账号的设置,列名均为id,类型均为varchar;有的表将id设置成了主键,有的表没有设置成主键。

通过举例说明通过id查询的一些问题。

之前登陆的时候,账号001-007都可以正常登陆:调用的方法是findById("001"). 但是用账号008登陆时出现了问题:findById("008"),没有任何结果返回,后来经过查证,中间发生了类型转换(到现在不明白为什么001-007没有问题)。后来改成findById("‘008‘"),登陆成功,将008用单引号引住。

后来在其他表通过id(非主键)查询的时候用单引号引起来就出错了,查询不出结果,去掉单引号,可以查到记录。不知道具体的原因。

于是得到了结论:当id作为主键时,通过id查询要加上单引号;id不是主键时,不要加单引号。

时间: 2024-11-06 09:39:54

关于通过id查询记录的一些总结的相关文章

mysql随机查询记录的高效率方法

mysql使用rand随机查询记录的高效率方法 一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了. 但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低. You cannot use a column with RAND() values in an ORDER BY clause

通过id查询用户,但是只返回指定的字段

使用hibernate和spring MVC 通过id查询到一个用户,但是只返回指定的字段 方式一: 拼接hql /*** * 通过数据库ID查询用户,但是只返回指定的字段 * @param id * @param propertyNames : 指定的多个成员变量 * @return */ public Object[] getPropertiesById(int id,String[] propertyNames){ if(ValueWidget.isNullOrEmpty(property

05Mybatis_入门程序——根据id查询用户

这篇文章我们来做一个入门的案例: 建表: 1 /* 2 SQLyog v10.2 3 MySQL - 5.1.72-community : Database - mybatis 4 ********************************************************************* 5 */ 6 7 8 /*!40101 SET NAMES utf8 */; 9 10 /*!40101 SET SQL_MODE=''*/; 11 12 /*!40014 SE

Hibernate单表操作(六)——查询记录get()与load()方法区别

转载请注明:http://blog.csdn.net/uniquewonderq 在上一次的案例中,通过get或者load方法得到的结果一样. 既然得到的结果一样, 那么  get和load方法查询记录的区别是什么呢? 区别一: 在不考虑缓存的情况下,get方法会在调用之后立即向数据库发出sql语句,发出selelct语句,去查找这个记录或者说对象,返回本身的持久化对象. load方法会在调用后返回一个代理对象. 该代理对象只保存了实体对象的主键id,直到真正使用对象的非主键属性时才会发出sql

05Mybatis_根据id查询用户

这篇文章我们来做一个入门的案例: 建表: 给出案例结构: 第一步:编写po类:User.java package cn.itcast.mybatis.po; import java.util.Date; public class User { private int id;//主键 private String username;//用户的名称 private Date birthday;//生日 private String sex;//性别 private String address;//

MySQL使用rand 随机查询记录效率测试

以下的文章主要介绍的是MySQL使用rand 随机查询记录效率测试,我们大家一直都以为MySQL数据库随机查询的几条数据,就用以下的东东,其实其实际效率是十分低的,以下就是文章的主要内容. SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了.但是真正测试一下才发现这样效率非常低.一个15万余条的库,查询5条数据,居然要8秒以上 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低. You cannot use

查询记录时rs.previous()的使用

查询记录时rs.previous()的使用 假如查询一个数据表,假设没有记录就显示提示信息,有就所有显示出来查询结果.这时假设是有查询结果的话就须要进行两次查询,第一次查完记录指针指向最后一条记录,開始第二次查询前,须要将指针回到第一条记录(使用rs.previous()),红色标记是使用rs.previous()方法时,必须採用的设置记录指针的方法. Statement stat=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,Res

根据群ID和用户Id查询 + string QueryQunByUserIdAndQunId(int userId, int qunId) V1.0

#region  根据群ID和用户Id查询 + string QueryQunByUserIdAndQunId(int userId, int qunId)  V1.0        /// <summary>        /// 13.0 根据群ID和用户Id查询        /// </summary>        /// <param name="userId"></param>        /// <param na

mongo里面根据对象字段的ID查询 db.Photo.find({&#39;owner.$id&#39;:ObjectId(&#39;xxxx&#39;)}) , 并且使用forEach循环修改查询的数据

var ones = db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}) db.Photo.find({'owner.$id':ObjectId("5344f0dab7c58e8e098b4567")}).forEach(function(o){o.owner=null;db.Photo.save(o)}); mongo里面根据对象字段的ID查询 db.Photo.find({'owne