查询
在查询这里,增加了这么几类函数(有部分是借鉴别的框架):
单行查询one
多行查询list
分页查询page
个数查询count
单个value
单列多值values
直接执行sql
直接执行
执行获取单行
执行获取多行
执行获取个数
执行获取单个值
执行获取单列多值
a.单行查询one
public NeoMap one(String tableName, NeoMap searchMap){}
public <T> T one(String tableName, T entity){}
public NeoMap one(String tableName, Columns columns, NeoMap searchMap) {}
public <T> T one(String tableName, Columns columns, T entity){}
参数
类型
详解
tableName
String
表名
searchMap
NeoMap
where条件后面的搜索条件
entity
T
where条件后面的搜索条件,实体形式
columns
Columns
返回结果中指定的列
注意:
1.one执行的时候会自动在sql语句最后添加limit 1
2.(重要)在搜索条件中对于排序可以放到搜索条件中,如下,其中排序适用于后面所有的查询
/**
* 测试order by
*/
@Test
public void testOrderBy1(){
// select `name` from neo_table1 where `group` = ? order by `name` desc
show(neo.list(TABLE_NAME, Columns.of("name"), NeoMap.of("group", "g", "order by", "name desc")));
}
@Test
public void testOrderBy2(){
// select `name` from neo_table1 where `group` = ? order by `name` desc, `group` asc limit 1
show(neo.list(TABLE_NAME, Columns.of("name"), NeoMap.of("group", "g", "order by", "name desc, group asc")));
}
@Test
public void testOrderBy3(){
// select `name` from neo_table1 where `group` = ? order by `name`, `group` desc, `id` asc limit 1
show(neo.list(TABLE_NAME, Columns.of("name"), NeoMap.of("group", "g", "order by", "name, group desc, id asc")));
}
b.多行查询list
多行查询函数的参数跟单行查询的函数是相同的
public <T> List<T> list(String tableName, T entity){}
public List<NeoMap> list(String tableName, NeoMap searchMap){}
public <T> List<T> list(String tableName, Columns columns, T entity){}
public List<NeoMap> list(String tableName, Columns columns, NeoMap searchMap) {}
参数同one
c.分页查询page
public List<NeoMap> page(String tableName, Columns columns, NeoMap searchMap, NeoPage page) {}
public <T> List<T> page(String tableName, Columns columns, T entity, NeoPage page){}
public List<NeoMap> page(String tableName, NeoMap searchMap, NeoPage page){}
public <T> List<T> page(String tableName, T entity, NeoPage page){}
public List<NeoMap> page(String tableName, Columns columns, NeoPage page){}
public List<NeoMap> page(String tableName, NeoPage page){}
参数
类型
详解
tableName
String
表名
searchMap
NeoMap
where条件后面的搜索条件
entity
T
where条件后面的搜索条件,实体形式
columns
Columns
返回结果中指定的列
page
NeoPage
内部包含pageIndex, pageSize, pageNo
d.个数查询count
针对个数的查询有下面这个几个函数
public Integer count(String tableName, NeoMap searchMap) {}
public Integer count(String tableName, Object entity) {}
public Integer count(String tableName) {}
e.单值查询value
针对这个查询,其实就是查询某一行中的某个列的值
public String value(String tableName, String field, Object entity) {}
public String value(String tableName, String field, NeoMap searchMap){}
public <T> T value(Class<T> tClass, String tableName, String field, NeoMap searchMap) {}
public <T> T value(Class<T> tClass, String tableName, String field, Object entity) {}
参数
类型
详解
tClass
Class
返回值的Class类型
tableName
String
表名
field
String
要查询的列名
entity
T
where条件后面的搜索条件,实体形式
searchMap
NeoMap
where条件后面的搜索条件
f.单列多值查询values
单列多值的函数为values
,对应的参数和上面介绍的value
相同
g.直接执行sql
直接执行这里面除了直接执行数据之外,还可以执行获取单列,单值,多列,个数等
直接执行
public List<List<NeoMap>> execute(String sql, Object... parameters) {}
sql是包含java的String的格式化转换符和JDBC的占位符"?"的,比如
neo.execute("update %s set `group`=?, `name`=%s where id = ?", TABLE_NAME, "group121", "'name123'", 121)
占位符: java的转换符:
转换符
说明
示例i
%s
字符串类型
"mingrisoft"
%c
字符类型
'm'
%b
布尔类型
true
%d
整数类型(十进制)
99
%x
整数类型(十六进制)
FF
%o
整数类型(八进制)
77
%f
浮点类型
99.99
%a
十六进制浮点类型
FF.35AE
%e
指数类型
9.38e+5
%g
通用浮点类型(f和e类型中较短的)
%h
散列码
%%
百分比类型
%
%n
换行符
%tx
日期与时间类型(x代表不同的日期与时间转换符
注意: 该execute不支持多语句执行,如果想执行多语句,则可以用事务方式,参考下面的tx,或者可以通过多结果集的方式,举例如下:
/**
* 测试多结果集
* CREATE PROCEDURE `pro`()
* BEGIN
* explain select * from neo_table1;
* select * from neo_table1;
* END
*/
@Test
public void testExecute5(){
show(neo.execute("call pro()"));
}
执行获取单行
执行单行其实就是在sql的最后添加limit 1,并返回唯一一个结果实体
public NeoMap exeOne(String sql, Object... parameters) {}
public <T> T exeOne(Class<T> tClass, String sql, Object... parameters){}
执行获取多行
public List<NeoMap> exeList(String sql, Object... parameters) {}
public <T> List<T> exeList(Class<T> tClass, String sql, Object... parameters){}
执行获取分页
public List<NeoMap> exePage(String sql, Integer startIndex, Integer pageSize, Object... parameters){}
public List<NeoMap> exePage(String sql, NeoPage neoPage, Object... parameters){}
执行获取个数
public Integer exeCount(String sql, Object... parameters) {}
执行获取单个值
public String exeValue(String sql, Object... parameters){}
public <T> T exeValue(Class<T> tClass, String sql, Object... parameters) {}
执行获取单列多值
public List<String> exeValues(String sql, Object... parameters){}
public <T> List<T> exeValues(Class<T> tClass, String sql, Object... parameters) {}
Last updated
Was this helpful?