主题:关于Example查询的问题,个人认为会出小小问题的地方,自己总结一下吧。
1.在 POJO 里属性为原始类型的查询情况,举例如下:
NewUser.java 中定义 age 为 int (其他属性均为封装类型)
......
private int age;
.....
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
......
映射文件和其他配置均准确。其中数据库中的记录如下表:
[img]C:\Documents and Settings\chenhao\桌面\aaa.bmp[/img]
现在用通过条件查询查查 name=tom 记录。代码如下:
......
NewUser user = new NewUser();
user.setName("tom");
List list = session.createCriteria(NewUser.class).add(Example.create(user)).list();
......
查询结果:
引用
Hibernate: select this.id as id0_, this.name as name0_, this.age as age0_, this.image as image0_, this.resume as resume0_ from new_user this where (this.name=? and this.age=?)
hava no record
可以看到这里并没有查询到想查的记录呕。请仔细看看 查询语句,会发现 and this.age=?这个条件。为什么呢?
引用
其实 hibernate 在用Example的查询的时候是封装了一个样例对象,让后执行查询,这里由于age 为int类型,所以在封装时候age已经有个默认值0 ,这使得你的查询其实是在查询 name=tom ,age = 0的 记录,当然不能查到了。
2.修改NewUser.java 里age 为Integer.并修改getter 和 setter 方法,做同样的查询:
结果如下:
引用
Hibernate: select this.id as id0_, this.name as name0_, this.age as age0_, this.image as image0_, this.resume as resume0_ from new_user this where (this.name=?)
********************** result ****************
user id :1 user name : tom user age : 26
********************** end *******************
再看看打印出的查询语句,已经没有age的条件了。这才是想要的结果。
不知道这里说清楚这个问题了没有,请大家指点!
3.其实说这么多,就想说一个意思。就是在 pojo 里面最好用封装类型而不要用原始类型。
分享到:
相关推荐
Hibernate作为一款强大的ORM(对象关系映射)框架,提供了多种灵活的查询方式,其中`Example`查询是基于对象实例进行匹配查询的一种方法,它允许开发者通过提供一个实体类的实例来检索数据库中与该实例相似或相等的...
Example模式是ibatis提供的一种查询方式,它允许开发者通过一个示例对象来构造查询条件,从而实现更为灵活的查询逻辑。这种模式特别适合于复杂的查询需求,如多条件组合查询等。 ### 4. **Example模式的具体应用** ...
Java中MyBatis关于Example类的使用详解 MyBatis中的Example类是MyBatis Generator工具自动生成的,用于简化数据库查询操作。Example类提供了一个通用的查询条件设置机制,允许开发者灵活地指定查询条件。 一、什么...
在逆向工程生成的代码中,Example方法被广泛应用于构建动态查询条件。下面详细介绍这些方法及其用法: ##### 1. 创建Example实例 ```java // 创建Example实例 xxxExample example = new xxxExample(); // 创建...
Example4 条件列子查询/查询列子查询/exists子查询/count子查询 Example5 聚合查询 Example6 条件分组 Example7 加锁 Exapmle8 结果集封装 Exapmle9 结果列的一些操作。case/转换/null判断... Exapmle10 spring-data...
在MyBatis中,`Example`类是一个非常实用的工具,尤其在进行复杂查询时,它可以帮助我们构建灵活的查询条件。本篇文章将详细介绍如何利用`Example`类实现对MySQL数据库中多个字段的模糊查询,以及与之相对的直接编写...
在Java编程语言的世界里,"Java Example"通常指的是用于演示特定概念、语法或技术的代码实例。这样的示例对于学习和理解Java编程至关重要,因为它们提供了直观的方式去体验实际编程。下面我们将深入探讨一些Java编程...
3. **MyBatis**:MyBatis 是一个持久层框架,它简化了 SQL 查询操作。与传统的 JDBC 相比,MyBatis 通过 XML 或注解的方式将 SQL 语句和 Java 代码绑定,降低了数据访问的复杂性。在本项目中,MyBatis 负责与数据库...
- 调整数据库查询效率,使用查询集操作优化。 这本书的英文版附带的代码库(Django.by.Example_CODE.zip)将帮助读者更好地理解这些概念,并提供实践项目来加深理解。通过阅读和运行这些代码,你将能够亲手构建...
在这个名为"sqlite3_example.zip"的压缩包中,我们很可能会找到一个关于SQLite3数据库操作的示例,包括如何执行基本的增、删、改、查(CRUD)操作。 1. **创建SQLite3数据库**: 在SQLite3中,你可以通过运行`...
然而,有时你可能会遇到一个问题:即使查询的SQL语句在数据库中确实返回了数据,`reader.HasRows` 仍然返回 `false`。这个问题通常是由于多种原因引起的,下面我们将深入探讨可能的原因和解决方案。 首先,让我们...
在Android应用开发中,"Android example part 2"是一个典型的示例项目,涵盖了多个关键的Android组件和技术。这个项目可能包含以下方面的详细实践代码: 1. **SQLite**: Android的内置数据库系统,用于本地数据存储...
这个“hibernate example”是一个关于如何在Eclipse环境下设置和运行一个基本的Hibernate应用的教程。 首先,我们从在Eclipse上创建Hibernate实例开始。这通常涉及到以下步骤: 1. **安装Hibernate插件**:Eclipse...
2. **011 模拟ATM(自动柜员机)界面**:此项目更进阶,旨在模拟现实生活中ATM的操作流程,可能包括存款、取款、查询余额等功能。这涵盖了以下知识点: - 结构化数据,如使用结构体来表示账户信息,包括账号、余额...
以下是关于这两个技术及其整合的详细知识: **Spring Boot** Spring Boot是由Pivotal团队提供的开源框架,旨在简化Spring应用程序的初始搭建以及开发过程。它预设了大部分默认配置,使得开发者可以快速启动新项目,...
关于压缩包中的"Example App"文件,这可能是整个示例应用程序的源代码或可执行文件。如果包含源代码,学习者可以逐行查看和分析,理解PB 9.0的语法和编程模式。如果包含可执行文件,用户可以直接运行以查看应用程序...
源代码可能展示如何实现自定义ContentProvider,以及如何使用Uri查询和操作数据。 8. **异步任务与线程管理** Android SDK Example可能包含AsyncTask、Handler、Thread和Runnable的使用,用于在后台执行耗时操作,...
这个"Android-ListView-Example"项目显然旨在教你如何在Android应用中有效地使用ListView。以下是对这个主题的详细说明: 1. **ListView的基本概念**:ListView是一个视图容器,它能够显示一组可滚动的项目列表。每...
MySQL Example Databases,特别是其中的"world database"(InnoDB版本),是学习和演示数据库管理、SQL查询以及MySQL功能的理想示例。这个数据库包含了不同国家和城市的详细信息,包括人口、GDP等统计数据,适用于...