Skip to content

数据库类使用指南

hely ho edited this page May 11, 2015 · 14 revisions

数据库工具类(JdbcOperate)使用指南

##一、类说明 org.voovan.db.JdbcOperate ##二. 构造函数 ###构造函数有两种: ####无事物控制

public JdbcOperate(DataSource dataSource)
  • dataSource: 数据库连接数据源

####支持事物控制

public JdbcOperate(DataSource dataSource,boolean isTrancation)
  • dataSource: 数据库连接数据源
  • isTrancation: 控制事物
  • true: 开启事物控制
  • false: 不适用事物

##三. 数据库操作方法架构 ###3.1 查询操作 ####3.1.1 查询单个记录方法

  • 查询单条记录分为返回Map对象或者Object对象
  • 查询方法:
public Map<String, Object> QueryMap(*)
public <T> QueryObject(*)

####3.1.2 查询全部记录方法

  • 查询全部记录返回一个List,其中List中填充的对象为Map或者Object
  • 查询方法:
public List<Map<String, Object>> QueryMapList(*)
public List<T> QueryObjectList(*)

####3.1.3 查询返回结果对象说明

  • Map<String,Object>: 将数据库表中 key 为表中的字段,Value 为字段的值
  • : 将数据库表中的记录通过反射到对象(范型)的属性中

###3.2 更新操作

更新方法

  • 更新方法
int update(*)

返回值为更新记录数


###3.3 查询方法参数模型 ####3.3.1 返回Map对象的查询方法参数列举

public * Method(String sqlText)
  • sqlText: 直接执行SQL字符串
public * Method(String sqlText, Map<String, Object> mapArg)
  • sqlText: SQL字符串 参数使用":"引导一个标识,例如where id=:id,中 id 就是标识。
  • mapArg: Map参数,key指代SQL字符串的标识,value用于在SQL字符串中替换标识。
public * Method(String sqlText, Object arg)
  • sqlText: SQL字符串 参数使用":"引导一个标识,例如where id=:id,中 id 就是标识。
  • arg: arg参数 属性指代SQL字符串的标识,属性值用于在SQL字符串中替换标识
public * Method(String sqlText, Object... args)
  • sqlText SQL字符串 参数使用":"引导一个索引标识,索引标识从1开始,例如where id=:1
  • args: 不定个数参数,索引指代SQL字符串标识,值用户再 SQL 字符串中替换标识

####3.3.2 返回Object对象的查询方法参数列举

public * Method(String sqlText, Class<T> t)
  • sqlText: 直接执行SQL字符串
  • t: 返回对象类型的 Class
public * Method(String sqlText, Class<T> t, Map<String, Object> mapArg)
  • sqlText: SQL字符串 参数使用":"引导一个标识,例如where id=:id,中 id 就是标识。
  • t: 返回对象类型的 Class
  • mapArg: Map参数,key指代SQL字符串的标识,value用于在SQL字符串中替换标识。
public * Method(String sqlText, Class<T> t, Object arg)
  • sqlText: SQL字符串 参数使用":"引导一个标识,例如where id=:id,中 id 就是标识。
  • t: 返回对象类型的 Class
  • arg: arg参数 属性指代SQL字符串的标识,属性值用于在SQL字符串中替换标识
public * Method(String sqlText, Class<T> t, Object... args)
  • sqlText SQL字符串 参数使用":"引导一个索引标识,索引标识从1开始,例如where id=:1
  • t: 返回对象类型的 Class
  • args: 不定个数参数,索引指代SQL字符串标识,值用户再 SQL 字符串中替换标识

###3.4 事物控制方法

这里所说的事物是数据库的事物

####事物提交方法

public void commit() \\提交事物中的操作

####事物回滚方法

public void rollback() \\提交事物中的操作

##四. 数据库操作方法模型 ####3.1 以Map返回单条记录

public Map<String,Object> queryMap(String sqlText)
public Map<String,Object> queryMap(String sqlText, Map<String, Object> mapArg)
public Map<String,Object> queryMap(String sqlText, Object arg)
public Map<String,Object> queryMap(String sqlText, Object... args)

####3.2 以Map返回所有记录

public List<Map<String,Object>> queryMapList(String sqlText)
public List<Map<String,Object>> queryMapList(String sqlText, Map<String, Object> mapArg)
public List<Map<String,Object>> queryMapList(String sqlText, Object arg)
public List<Map<String,Object>> queryMapList(String sqlText, Object... args)

####3.3 以Object返回单条记录

public <T> queryObject(String sqlText, Class<T> t)
public <T> queryObject(String sqlText, Class<T> t, Map<String, Object> mapArg)
public <T> queryObject(String sqlText, Class<T> t, Object arg)
public <T> queryObject(String sqlText, Class<T> t, Object... args)

####3.4 以Object返回所有记录

public List<T> queryObject(String sqlText, Class<T> t)
public List<T> queryObject(String sqlText, Class<T> t, Map<String, Object> mapArg)
public List<T> queryObject(String sqlText, Class<T> t, Object arg)
public List<T> queryObject(String sqlText, Class<T> t, Object... args)

##四. 使用举例

//构造JdbcOperate类
JdbcOperate jOperate = new JdbcOperate(dataSource);

List<Map<String,Object>> smm = jOperate.queryMapList("select * from sc_script");
Logger.info(smm);

//Map参数 => 返回List<Map>
HashMap<String, Object> xMap = new HashMap<String, Object>();
xMap.put("packagePath", "org.hocate.test");
List<Map<String,Object>> mm = jOperate.queryMapList("select * from sc_script where PackagePath=:packagePath",xMap);
Logger.info(mm);

//对象参数 => 返回对象列表 List<Object>
ScriptEntity sEntity = new ScriptEntity();
sEntity.setPackagePath("org.hocate.test");
List<ScriptEntity> lmm = jOperate.queryObjectList("select * from sc_script where PackagePath=:packagePath",ScriptEntity.class,sEntity);
Logger.info(lmm);

//不定个数参数 => 返回一个Object
ScriptEntity llmm = jOperate.queryObject("select * from sc_script where PackagePath=:1 and version=:2",ScriptEntity.class,"org.hocate.test",2.0);
Logger.info(llmm);

//事物测试
jOperate = new JdbcOperate(dataSource,true);
Logger.info(jOperate.update("update sc_script set version=0"));
Logger.info(jOperate.queryMapList("select * from sc_script"));
jOperate.rollback();