-
Notifications
You must be signed in to change notification settings - Fork 69
数据库类使用指南
hely ho edited this page May 11, 2015
·
14 revisions
##一、类说明
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();