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", "红迅采购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;
    }
}
文档更新时间: 2021-08-04 09:47   作者:zyg