业务层

我们将业务层放置在dao包中,srczh.jar自动会在dao包中寻找注入到控制器中的业务对象接口,实现接口再继承框架中内置对象SrcDaoImpl后,业务层就具备了操纵数据库的能力了。

业务接口

业务层的接口用来描述业务模块中所用到的功能描述,看下面示例代码中用户模块的几个常用业务功能定义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.javaweb.dao;
 
import java.util.Map;
 
public interface LoginDao {
 
    /** 用户登录  */
    public Map login(Map map);
     
    /** 用户注册 */
    public Map regis(Map map);
     
    /** 修改用户  */
    public Map update(Map map);
     
}

dao包的路径需要和控制器包同一级别

实现类

业务实现类则是对业务接口方法的一个具体实现对象,该对象需要继承srczh.jar提供的业务基础类SrcDaoImpl。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.javaweb.dao.impl;
 
import com.javaweb.dao.LoginDao;
import com.srczh.manage.SrcDaoImpl;
import com.srczh.manage.jdbc.SrcJdbc;
 
public class LoginDaoImpl extends SrcDaoImpl implements LoginDao {
 
    @Override
    public Map login(Map map) {
    // TODO 自动生成的方法存根
    }
     
    @Override
    public Map regis(Map map) {
    // TODO 自动生成的方法存根
    }
     
    @Override
    public int update(Map map) {
    // TODO 自动生成的方法存根
    }
}

上面的业务实现类中LoginDaoImpl实现了LoginDao接口并继承了SrcDaoImpl,业务类就已经具备数据库操纵能力在方法中使用。

内置对象

上面的实现类中我们继承SrcDaoImpl类后,使用框架提供的内置对象来实现数据操作

srcDao提供数据库操作能力
在业务方法中通过this.来引用
SrcJdbcsrczh.jar框架用来简化jdbc操作的内置工具类
需要new来使用

srcDao提供方法如下表

返回方法参数说明
ObjectinsertSrcJdbc jdbc,Map map传入SrcJdbc类和数据封装对象map进行插入数据
ObjectinsertSrcJdbc jdbc,Object object传入SrcJdbc类和数据封装对象object进行插入数据
ObjectinsertSrcJdbc jdbc,SrcJson srcjson传入SrcJdbc类和数据封装对象srcjson进行插入数据
ObjectinsertSrcJdbc jdbc,List list传入SrcJdbc类和数据封装对象list进行批量插入数据(若list是多笔)
ObjectinsertString sql,Object[] object[]传入sql语句串和数据封装对象object[]进行插入数据
ObjectinsertString sql,Object[] params,String connName传入sql语句和数据封装对象object[]以及指定数据源connName进行插入数据
(多数据源下使用)
intupdateSrcJdbc jdbc,Map map传入SrcJdbc类和数据封装对象map进行修改数据
intupdateSrcJdbc jdbc,Object object传入SrcJdbc类和数据封装对象object进行修改数据
intupdateSrcJdbc jdbc,SrcJson srcjson传入SrcJdbc类和数据封装对象srcjson进行修改数据
intupdateSrcJdbc jdbc,List list传入SrcJdbc类和数据封装对象list进行批量插入数据(若list是多笔)
intupdateString sql,Object[] object传入sql语句和数据封装对象object[]进行修改数据
intupdateString sql,Object[] object,String connName传入sql语句和数据封装对象object[]及指定数据源connName进行修改数据
(多数据源下使用)
intdeleteSrcJdbc jdbc,Map map传入SrcJdbc类和数据封装对象map进行删除数据
intdeleteSrcJdbc jdbc,Object object传入SrcJdbc类和数据封装对象object进行删除数据
intdeleteSrcJdbc jdbc,SrcJson srcjson传入SrcJdbc类和数据封装对象srcjson进行删除数据
intdeleteString sql,Object[] object传入sql语句和数据封装对象object[]进行删除数据
intdeleteString sql,Object[] object,String connName传入sql语句和数据封装对象object[]及指定数据源connName进行删除数据
(多数据源下使用)
ListselectSrcJdbc jdbc传入SrcJdbc类对象进行查询数据
ListselectSrcJdbc jdbc,Map map传入SrcJdbc类和数据封装对象map进行查询数据
ListselectSrcJdbc jdbc,Object[] object传入SrcJdbc类和数据封装对象object进行查询数据
ListselectString sql, Object[] object传入sql语句和数据封装对象object[]进行查询数据
ListselectString sql, Object[] object,String connName传入sql语句和数据封装对象object[]以及数据源名进行查询数据
(多数据源下使用)
ListselectString sql,Object[] object,Page page传入sql语句和数据封装对象object[]以及page分页对象进行查询数据
ListselectString sql, Object[] object,String connName,Page page传入sql语句和数据封装对象object[]以及数据源名进行分页查询数据
(多数据源下使用)
MapgetSrcJdbc jdbc,Map map传入SrcJdbc类对象及数据封装对象map进行查询数据
(适合单条数据查询
MapgetSrcJdbc jdbc,Object object传入SrcJdbc类对象和数据封装对象object进行数据查询
(适合单条数据查询
Mapgettring sql,Object[] object传入sql语句和数据封装对象object[]进行数据查询
(适合单条数据查询
MapgetString sql,Object[] object,String connName传入sql语句和数据封装对象object[]及指定数据源connName进行数据查询
(适合单条数据查询
String[]BatchSrcJdbcList ls传入SrcJdbc列表对象进行事务操作
String[]BatchSrcJdbcList ls,List list传入SrcJdbc列表对象及数据列表对象进行事务操作
String[]BatchSrcJdbcList ls,List list,String connName传入SrcJdbc列表对象及数据列表对象connName数据源名进行事务操作
MapcallString call,Object[] data,Object[] out传入数据库函数名称及数据数组对象、函数输出对象,调用数据库函数操作
MapcallString call,Object[] data,Object[] out,String connName传入数据库函数名称及数据数组对象、函数输出对象、connName数据源名调用数据库函数操作

SrcJdbc对象属性如下

SrcJdbc赋值类旨在简化和快速写或简单化sql语句,如相对复杂的sql则不推荐使用。SrcJdbc参数对象是协同数据封装参数一起使用。
详细用法及示例见章节(数据操作)

StringObject数据库操纵表名称。
例:srcjdbc.Object="表名1,表名2" 多表使用逗号隔开
StringPool多数据源下用于指定作用于那个数据库。
例:srcjdbc.Pool="数据库A" 需要对应配置文件中已经配置的数据源
StringWheresql查询语句中的where条件。
例:srcjdbc.where="列名1,列名2" 多个列名用逗号隔开.
StringLikesql查询语句中的Like条件。
例:srcjdbc.Like="列名1,列名2"
StringInsql查询语句中的in条件。
例:srcjdbc.In="列名1,列名2"
StringFieldssql查询语句中的查询列名。
例:srcjdbc.Fields="*" 不写默认查询全部
StringOrdeysql查询语句中的排序。
例:srcjdbc.Ordey="id desc,name asc"
StringGroupsql查询语句中的分组。
例:srcjdbc.Group="name"
intNumber查询时用于返回条数
StringSetsql修改语句中的set字段。
例:srcjdbc.Set="列名1,列名2"
StringCall调用存储过程中使用
StringJoin关联查询中使用
StringReturn新增数据成功后指定返回的字段,如新增成功后返回id
StringYsql指定使用预sql名称
String[]SqlPrame若使用预sql需要指定参数数组
BooleanCache是否对查询数据进行缓存。默认false
intDDL批量事务处理中用于指定sql类型。
SrcJdbc.INSERT;--插入
SrcJdbc.UPDATE;--修改
SrcJdbc.DELETE;--删除
SrcJdbc.SYSTEM;--系统语句
MapMap用于绑定参数map对象

业务示例

示例1

sql方式实现登录查询(login)

1
2
3
4
5
6
7
8
9
10
11
@Override
public Map login(Map map) {
    String sql="select count(1) from userinfo where username=? and password=?";
    Map rmap = new HashMap();
    try {
        rmap = this.srcDao.get(sql, new Object[] {map.get("username"),map.get("password")});
    catch (SQLException e) {
        e.printStackTrace();
    }
    return rmap;
}

SrcJdbc方式实现登录查询,返回map为整条数据列,若需要选择输出列使用SrcJdbc.Fields=""

1
2
3
4
5
6
7
8
9
10
11
12
public Map login(Map map) {
    SrcJdbc jdbc=new SrcJdbc();
    jdbc.Object="userinfo";       //将要访问的表名
    jdbc.Where="username,password"//将要匹配查询的字段
    Map rmap=null;
    try {
        rmap=this.srcDao.get(jdbc,map);
    catch (SQLException e) {
        e.printStackTrace();
    }
    return rmap;
}

示例2

实现注册新增(regis)

使用SrcJdbc方式进行表的新增操作,map参数中封装需要新增的数据且key必须和表中字段一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public Map regis(Map map) {
    SrcJdbc jdbc=new SrcJdbc();
    jdbc.Return="ID";        //指定插入后返回该字段的值
    jdbc.Object="userinfo";  //访问的表名
    jdbc.Where="UNAME";     //过滤该条件不能重复
    map.put("ID""SEQ_USERINFO.NEXTVAL");//oracle 数据库中如主键使用序列
    try {
        int id=this.srcDao.insert(jdbc, map); //将参数map中的值insert到表userinfo
        map.put("id", id);       //将返回id写入map
    catch (SQLException e) {
        e.printStackTrace();
    }
    return map;
}

示例3

实现用户密码修改(update)

使用SrcJdbc方式操作密码修改

1
2
3
4
5
6
7
8
9
10
11
12
13
public int update(Map map) {
    SrcJdbc jdbc=new SrcJdbc();
    jdbc.Object="userinfo";  //将要访问的表名
    jdbc.Set="password";     //修改的字段
    jdbc.Where="id";         //过滤的条件字段
    int n=0;
    try {
        n=this.srcDao.update(jdbc, map);
    catch (SQLException e) {
        e.printStackTrace();
    }
    return n;
}
2016 - 2021 © srczh.com 版权所有 增值电信经营许可:粤ICP备19068081号
深圳市中文远星科技有限公司