查询

在查询这里,增加了这么几类函数(有部分是借鉴别的框架):

  • 单行查询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){}

注意: 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){}

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) {}

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的转换符:

注意: 该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