12 数据库 11 ORM 数据查询
作者:谎言诞行    发布时间:2024年11月27日

1、简要说明

        从这里开始,我们将讲解用 ORM 的方式来对数据查询更新操作。在框架中,实体处理是建立在SQL 语句处理的基础上的。我通过自定义的注解,将实体对象映射为一个可执行的 SQL 语句字符串,以及对应的参数列表。然后,通过 JDBC 方式执行语句。下面,我将设计几个库表,向大家介绍我所自定义的几个注解的作用。

2、库表设计

        这里为了演示方便,我使用了SQL Server 2016 数据库作为例子。具体库表设计信息,可以参考《12 数据库 08 ORM 数据新增》文章中,第2点中的库表结构。

2.1、数据准备

        为了方便测试,我们准备了3个表的数据,具体如下:

image.png

2.2、视图结构

        为了方便演示查询,我创建了一个数据库视图,用于查询各个学生的成绩。

image.png

        数据检索如下:

image.png

2.3、实体映射如下:

image.png

3、查询演示

        对于实体信息查询,在实现上只有一个 queryEntity 方法,其它查询方法都是简化后的这个方法。它的描述如下:

image.png

3.1、完整的查询演示代码如下:

image.png

image.png

3.2、查询条件处理

        查询条件,我们使用的是 CondiParamList 对象。一般在设置条件前,要先设置查询的实体类。设置实体类之后,直接写实体类的属性名作为查询参数即可。如果要用数据库字段,则不能注册实体类信息。直接写数据库字段即可。

比如这样:

image.png

        查询条件的处理,有2种模式:普通条件 和 模板条件。下面我们写2种不同的查询条件处理方式。

3.2.1、普通的查询方式举例

image.png

image.png

3.2.2、模板的查询方式举例

        因为在查询时,某些条件可能需要优先处理(比如:增加括号之类的),这时我们就要设置一种模板,让它先执行。这种情况,还是比较常见的。

image.png

image.png

        注意:这里之所以 调用 setCodec 只是测试打印用。正式代码不要这么写。

3.3、排序条件处理

        排序条件,使用 OrderParamList 对象。它只负责构造排序语句。如果参数不写升序 或者是降序,默认是升序处理。在指定排序对象时,要注明所排序属性的实体。如果要用数据库字段,则不能注册实体类信息。直接写数据库字段即可(参考3.2中的截图)举例如下图:

image.png

image.png

image.png

3.4、分页条件处理

image.png


本文完结。

填写一种颜色的字符(不区分大小写),1分钟有效,点击图片刷新