二、数据操作方法模型

在上一章我们学到了如何连接数据库,那么下面我们应该讲讲如何查询数据了,不过在介绍数据查询之前,我想先想大家介绍一下查询函数的设计模型:


1查询方法模型

1.1查询方法模型根据返回值的数量,我们定义了两种:返回单条数据 / 返回多条数据。**
单条数据返回模型多条数据返回模型
Map QueryMap(…)List<Map> QueryMapList(…)
<T> QueryObject(…)List<T> QueryObjectList(…)

以上都是方法的名称。

  • 返回查询的中的第一条数据时我们可以使用非List结尾的方法.
  • 需要查询多条乃至全部数据的时候我们使用List结尾的方法.
1.2查询方法模型根据返回值类型,我们定义了两种: 一行数据用 Map 返回 / 一行数据用 Object 返回。
一行数据用 Map 返回一行数据用 Object 返回
Map QueryMap(…)T QueryObject(…)
List<Map> QueryMapList(…)List<T> QueryObjectList(…)

以上都是方法的名称。

  • 如果需要返回查询结果是 Map 的时候使用QueryMap起始的方法.
  • 如果需要返回查询结果是 对象 的时候使用QueryObject起始的方法.
1.3 返回结果的说明
  • Map<String,Object>: 将数据库表中 key 为表中的字段,Value 为字段的值
  • <T>: 将数据库表中的记录通过反射到对象(范型)的属性中

2.查询方法的参数模型

上一节介绍的函数模型告诉了我们如何根据自己的需要选择查询方法.下面我们来说一说如何给这些方法传递参数.参数方法大致分为两种形态:

  • 返回数据类型为Map
  • 返回数据类型为对象返回数据类型为Map

Method(String sqlText)Method(String sqlText, Map<String, Object> mapArg)Method(String sqlText, Object arg)Method(String sqlText, Object… args)

以上四个方法的Method在使用时请自行替换成第一节中的方法名.

返回数据类型为对象

Method(String sqlText, Class<T> t)Method(String sqlText, Class<T> t, Map<String, Object> mapArg)Method(String sqlText, Class<T> t, Object arg)Method(String sqlText, Class<T> t, Object… args)

以上四个方法的Method在使用时请自行替换成第一节中的方法名.我们可以看到这里的四个方法比上面的四个方法多了一个Class<T> t参数,这个参数就是返回对象的数据模型.只需要执行这个参数就可以是返回的数据自动转换为'Class<T> t'这个对象.

参数解释 下面来解释一下各个参数:

  • sqlText: SQL字符串 参数使用":"引导一个标识,例如where id=:id,中 id 就是标识。
  • t: 返回对象类型的 Class
  • mapArg: Map参数,key指代SQL字符串的标识,value用于在SQL字符串中替换标识。
  • arg: arg参数 属性指代SQL字符串的标识,属性值用于在SQL字符串中替换标识。
  • args: 不定个数参数,索引指代SQL字符串标识,值用于再 SQL 字符串中替换标识。通过以上的参数解释我们可以看出参数实际上可以分为三类:

  • SQL文本

  • 返回对象类型模型
  • SQL中的参数提供者而其中SQL中的参数提供者还包含三个类型:

  • Map 参数

  • 对象参数
  • 不定个数参数(数组参数)我们实际使用的时候只需要结合以上参数的分类准备参数就足够了.

3.所有的查询方法原型

3.1 以Map返回单条记录
  1. public Map<String,Object> queryMap(String sqlText)
  1. public Map<String,Object> queryMap(String sqlText, Map<String, Object> mapArg)
  1. public Map<String,Object> queryMap(String sqlText, Object arg)
  1. public Map<String,Object> queryMap(String sqlText, Object... args)
3.2 以Map返回所有记录
  1. public List<Map<String,Object>> queryMapList(String sqlText)
  1. public List<Map<String,Object>> queryMapList(String sqlText, Map<String, Object> mapArg)
  1. public List<Map<String,Object>> queryMapList(String sqlText, Object arg)
  1. public List<Map<String,Object>> queryMapList(String sqlText, Object... args)
3.3 以Object返回单条记录
  1. public <T> queryObject(String sqlText, Class<T> t)
  1. public <T> queryObject(String sqlText, Class<T> t, Map<String, Object> mapArg)
  1. public <T> queryObject(String sqlText, Class<T> t, Object arg)
  1. public <T> queryObject(String sqlText, Class<T> t, Object... args)
3.4 以Object返回所有记录
  1. public List<T> queryObjectList(String sqlText, Class<T> t)
  1. public List<T> queryObjectList(String sqlText, Class<T> t, Map<String, Object> mapArg)
  1. public List<T> queryObjectList(String sqlText, Class<T> t, Object arg)
  1. public List<T> queryObjectList(String sqlText, Class<T> t, Object... args)