1. 概述
CommonDao是一个直接操作SQL的通用工具类,我们在执行SQL语句的时候可以,直接使用这个工具类。比如在脚本中,我们平台中很多的地方可以使用这个工具类访问数据库。
2. 基本使用
在脚本中可以使用如下方法对获取CommonDao
import com.redxun.common.utils.SpringUtil;
import com.redxun.db.CommonDao;
CommonDao dao=SpringUtil.getBean(CommonDao.class);
获取CommonDao后我们可以对数据进行操作。
3. CommonDao的方法
3.1 执行SQL语句
方法定义
int execute(String sql)
这个方法一般用于执行SQL语句操作,使用的是当前服务的默认数据源。
参数:
SQL:一般是更新,删除语句
返回值,为影响的行数。
3.2 执行SQL语句
方法定义 :
int execute(String alias,String sql)
这个方法一般用于执行SQL语句操作,使用的是当前服务的默认数据源。
参数:
alias : 数据源别名
sql : sql 语句,一般是更新或删除语句
返回值,为影响的行数。
3.3 根据数据源别名获取数据源
方法定义:
DataSource getDataSource(String alias)
参数:
alias : 数据源别名
返回值 DataSource 对象
3.4 获取数据源类型
方法定义
String getDbType(String alias)
根据数据源别名获取数据库类型。
3.5 执行命名参数的SQL
方法定义
int executeNamedSql(SqlModel model)
sql 的写法:
insert into student(id,name,age) values (:id,:name,:age)
返回值:
返回的记录数
3.6 执行SQL
方法定义
int execute(String sql,Map<String,Object> params)
使用方法:
String sql="insert into orders (ID_,NAME_,ALIAS_) values (#{id},#{name},#{alias})";
Map<String,Object> params=new HashMap<String, Object>();
params.put("id", "2");
params.put("name", "ABC公司采购JSAAS合同");
params.put("alias", "redxun");
commonDao.execute(sql, params);
返回值,影响的行数
3.7 执行SQL
方法定义
int execute(String alias, String sql,Map<String,Object> params)
和上面的方法不同点是,第一个参数为数据源别名。
3.8 执行SQL
import com.redxun.common.base.entity.SqlModel;
int execute(SqlModel sqlModel);
3.9 执行SQL
public int execute(String alias, SqlModel sqlModel)
参数:
alias :数据源别名
sqlModel:sql对象
3.10 执行查询返回列表
方法定义:
List query(String sql)
参数为 SQL
返回数据为List,列表的数据结构为Map对象实例。
3.11 执行SQL查询
方法定义
List query(String alias,String sql)
参数:
alias :方法别名
sql: SQL语句
返回数据为List,列表的数据结构为Map对象实例。
3.12 根据sql 和参数查询数据,返回数据为List,中间的数据结构为Map
方法定义
List query(String sql,Map<String,Object> params)
调用方法:
String sql="select * from orders where id_=#{id}";
Map<String,Object> params=new HashMap<String, Object>();
params.put("id", "2");
List list= commonDao.query(sql, params);
3.13 查询数据列表
方法定义
List query(String alias,String sql,Map<String,Object> params)
参数:
alias :数据源别名
sql: sql语句
params: 参数映射
和上面的方法不同在于,这个方法的第一个参数为 数据源别名。
3.14 根据sqlModel查询列表数据
方法定义:
List query(SqlModel sqlModel)
返回列表数据。
示例:
String sql="select * from demo where name like #{w.name}";
SqlModel sqlModel=new SqlModel(sql);
sqlModel.addParam("name","A%");
List list = commonDao.query(sqlModel);
System.err.println(list);
3.14 根据sqlModel查询列表数据
List query(String alias, SqlModel sqlModel)
和前面的方法不同,第一个参数为数据源别名。
3.15 查询单值
这种一般用于查询计数来使用,只能返回一个值。
方法定义:
Object queryOne(SqlModel sqlModel)
用法:
String sql="select name from orders where id_=#{id}";
Map<String,Object> params=new HashMap<String, Object>();
params.put("id", "2");
String name=(String) commonDao.queryOne(sql, params);
3.15 查询单值
方法定义:
Object queryOne(String alias, SqlModel sqlModel)
这个和前一个方法不同在于第一个参数为数据源。
3.16 返回一行记录
Object queryOne(String sql)
3.17 查询单值
方法定义:
Object queryOne(String alias, String sql)
参数
alias: 数据源名称
sql : sql语句
3.18 返回单条记录,返回的Map对象
方法定义
Map queryForMap(String sql)
3.18 返回单条记录,返回的Map对象
Map queryForMap(String alias,String sql)
和前一个方法的不同在于,第一个参数为 数据源别名。
3.19 返回单条记录,返回的Map对象
方法定义:
Map queryForMap(SqlModel sqlModel)
根据sqlModel 查询一行数据。
示例:
public void queryForMap(){
String sql="select * from demo where id = #{w.id}";
Map<String,Object> params=new HashMap<>();
SqlModel sqlModel=new SqlModel(sql);
sqlModel.addParam("id","23");
Map map= commonDao.queryForMap(sqlModel);
System.err.println(map);
}
参数这里写法 为 w.参数
3.20 返回单条记录,返回的Map对象
方法定义:
Map queryForMap(String alias,SqlModel sqlModel)
与上面的方法不同的是,第一个参数为数据源别名
3.21 分页查询
方法定义
Page query(String sql, Map<String,Object> params, Page page)
应用示例
String sql="select * from demo where name like #{w.name}";
Map<String,Object> params=new HashMap<>();
params.put("name","A%");
Page page=new Page();
page.pageNum(1);
page.pageSize(3);
Page p= commonDao.query(sql,params,page);
在编辑SQL语句的时候,注意参数的写法。
参数使用
3.22 分页查询
方法定义
Page query(String alias, String sql, Map<String,Object> params, Page page)
和前一个方法的不同是,第一个参数为数据源别名。
4.SQLMODEL对象定义
package com.redxun.common.base.entity;
import java.util.HashMap;
import java.util.Map;
/**
* sql model对象。
*/
public class SqlModel {
/**
* 数据源别名
*/
private String dsName="";
/**
* sql语句
*/
private String sql="";
/**
* 参数
*/
private Map<String,Object> params=new HashMap<>();
public SqlModel(){
}
public SqlModel(String sql){
this.sql=sql;
}
public SqlModel(String sql,Map<String,Object> params){
this.sql=sql;
this.params=params;
}
public String getSql() {
return sql;
}
/**
* 设置SQL
* @param sql
*/
public void setSql(String sql) {
this.sql = sql;
}
public Map<String, Object> getParams() {
return params;
}
public void setParams(Map<String, Object> params) {
this.params = params;
}
/**
* 添加参数
* @param key
* @param obj
*/
public void addParam(String key,Object obj){
this.params.put(key,obj);
}
public String getDsName() {
return dsName;
}
public void setDsName(String dsName) {
this.dsName = dsName;
}
}