在查询这里,增加了这么几类函数(有部分是借鉴别的框架):
a.单行查询one
Copy 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){}
注意:
1.one执行的时候会自动在sql语句最后添加limit 1
2.(重要)在搜索条件中对于排序可以放到搜索条件中,如下,其中排序适用于后面所有的查询
Copy /**
* 测试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
多行查询函数的参数跟单行查询的函数是相同的
Copy 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
Copy 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){}
内部包含pageIndex, pageSize, pageNo
d.个数查询count
针对个数的查询有下面这个几个函数
Copy public Integer count(String tableName, NeoMap searchMap) {}
public Integer count(String tableName, Object entity) {}
public Integer count(String tableName) {}
e.单值查询value
针对这个查询,其实就是查询某一行中的某个列的值
Copy 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) {}
f.单列多值查询values
单列多值的函数为values
,对应的参数和上面介绍的value
相同
g.直接执行sql
直接执行这里面除了直接执行数据之外,还可以执行获取单列,单值,多列,个数等
直接执行
Copy public List<List<NeoMap>> execute(String sql, Object... parameters) {}
sql是包含java的String的格式化转换符和JDBC的占位符"?"的,比如
Copy neo.execute("update %s set `group`=?, `name`=%s where id = ?", TABLE_NAME, "group121", "'name123'", 121)
占位符:
java的转换符:
注意:
该execute不支持多语句执行,如果想执行多语句,则可以用事务方式,参考下面的tx,或者可以通过多结果集的方式,举例如下:
Copy /**
* 测试多结果集
* 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,并返回唯一一个结果实体
Copy public NeoMap exeOne(String sql, Object... parameters) {}
public <T> T exeOne(Class<T> tClass, String sql, Object... parameters){}
执行获取多行
Copy public List<NeoMap> exeList(String sql, Object... parameters) {}
public <T> List<T> exeList(Class<T> tClass, String sql, Object... parameters){}
执行获取分页
Copy public List<NeoMap> exePage(String sql, Integer startIndex, Integer pageSize, Object... parameters){}
public List<NeoMap> exePage(String sql, NeoPage neoPage, Object... parameters){}
执行获取个数
Copy public Integer exeCount(String sql, Object... parameters) {}
执行获取单个值
Copy public String exeValue(String sql, Object... parameters){}
public <T> T exeValue(Class<T> tClass, String sql, Object... parameters) {}
执行获取单列多值
Copy public List<String> exeValues(String sql, Object... parameters){}
public <T> List<T> exeValues(Class<T> tClass, String sql, Object... parameters) {}