我们将业务层放置在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.来引用 |
SrcJdbc | srczh.jar框架用来简化jdbc操作的内置工具类 需要new来使用 |
返回 | 方法 | 参数 | 说明 |
Object | insert | SrcJdbc jdbc,Map | 传入SrcJdbc类和数据封装对象map进行插入数据 |
Object | insert | SrcJdbc jdbc,Object object | 传入SrcJdbc类和数据封装对象object进行插入数据 |
Object | insert | SrcJdbc jdbc,SrcJson srcjson | 传入SrcJdbc类和数据封装对象srcjson进行插入数据 |
Object | insert | SrcJdbc jdbc,List list | 传入SrcJdbc类和数据封装对象list进行批量插入数据(若list是多笔) |
Object | insert | String sql,Object[] object[] | 传入sql语句串和数据封装对象object[]进行插入数据 |
Object | insert | String sql,Object[] params,String connName | 传入sql语句和数据封装对象object[]以及指定数据源connName进行插入数据 (多数据源下使用) |
int | update | SrcJdbc jdbc,Map | 传入SrcJdbc类和数据封装对象map进行修改数据 |
int | update | SrcJdbc jdbc,Object object | 传入SrcJdbc类和数据封装对象object进行修改数据 |
int | update | SrcJdbc jdbc,SrcJson srcjson | 传入SrcJdbc类和数据封装对象srcjson进行修改数据 |
int | update | SrcJdbc jdbc,List list | 传入SrcJdbc类和数据封装对象list进行批量插入数据(若list是多笔) |
int | update | String sql,Object[] object | 传入sql语句和数据封装对象object[]进行修改数据 |
int | update | String sql,Object[] object,String connName | 传入sql语句和数据封装对象object[]及指定数据源connName进行修改数据 (多数据源下使用) |
int | delete | SrcJdbc jdbc,Map | 传入SrcJdbc类和数据封装对象map进行删除数据 |
int | delete | SrcJdbc jdbc,Object object | 传入SrcJdbc类和数据封装对象object进行删除数据 |
int | delete | SrcJdbc jdbc,SrcJson srcjson | 传入SrcJdbc类和数据封装对象srcjson进行删除数据 |
int | delete | String sql,Object[] object | 传入sql语句和数据封装对象object[]进行删除数据 |
int | delete | String sql,Object[] object,String connName | 传入sql语句和数据封装对象object[]及指定数据源connName进行删除数据 (多数据源下使用) |
List | select | SrcJdbc jdbc | 传入SrcJdbc类对象进行查询数据 |
List | select | SrcJdbc jdbc,Map map | 传入SrcJdbc类和数据封装对象map进行查询数据 |
List | select | SrcJdbc jdbc,Object[] object | 传入SrcJdbc类和数据封装对象object进行查询数据 |
List | select | String sql, Object[] object | 传入sql语句和数据封装对象object[]进行查询数据 |
List | select | String sql, Object[] object,String connName | 传入sql语句和数据封装对象object[]以及数据源名进行查询数据 (多数据源下使用) |
List | select | String sql,Object[] object,Page page | 传入sql语句和数据封装对象object[]以及page分页对象进行查询数据 |
List | select | String sql, Object[] object,String connName,Page page | 传入sql语句和数据封装对象object[]以及数据源名进行分页查询数据 (多数据源下使用) |
Map | get | SrcJdbc jdbc,Map map | 传入SrcJdbc类对象及数据封装对象map进行查询数据 (适合单条数据查询 |
Map | get | SrcJdbc jdbc,Object object | 传入SrcJdbc类对象和数据封装对象object进行数据查询 (适合单条数据查询 |
Map | get | tring sql,Object[] object | 传入sql语句和数据封装对象object[]进行数据查询 (适合单条数据查询 |
Map | get | String sql,Object[] object,String connName | 传入sql语句和数据封装对象object[]及指定数据源connName进行数据查询 (适合单条数据查询 |
String[] | BatchSrcJdbc | List | 传入SrcJdbc列表对象进行事务操作 |
String[] | BatchSrcJdbc | List | 传入SrcJdbc列表对象及数据列表对象进行事务操作 |
String[] | BatchSrcJdbc | List | 传入SrcJdbc列表对象及数据列表对象connName数据源名进行事务操作 |
Map | call | String call,Object[] data,Object[] out | 传入数据库函数名称及数据数组对象、函数输出对象,调用数据库函数操作 |
Map | call | String call,Object[] data,Object[] out,String connName | 传入数据库函数名称及数据数组对象、函数输出对象、connName数据源名调用数据库函数操作 |
SrcJdbc赋值类旨在简化和快速写或简单化sql语句,如相对复杂的sql则不推荐使用。SrcJdbc参数对象是协同数据封装参数一起使用。
详细用法及示例见章节(数据操作)
String | Object | 数据库操纵表名称。 例:srcjdbc.Object="表名1,表名2" 多表使用逗号隔开 |
String | Pool | 多数据源下用于指定作用于那个数据库。 例:srcjdbc.Pool="数据库A" 需要对应配置文件中已经配置的数据源 |
String | Where | sql查询语句中的where条件。 例:srcjdbc.where="列名1,列名2" 多个列名用逗号隔开. |
String | Like | sql查询语句中的Like条件。 例:srcjdbc.Like="列名1,列名2" |
String | In | sql查询语句中的in条件。 例:srcjdbc.In="列名1,列名2" |
String | Fields | sql查询语句中的查询列名。 例:srcjdbc.Fields="*" 不写默认查询全部 |
String | Ordey | sql查询语句中的排序。 例:srcjdbc.Ordey="id desc,name asc" |
String | Group | sql查询语句中的分组。 例:srcjdbc.Group="name" |
int | Number | 查询时用于返回条数 |
String | Set | sql修改语句中的set字段。 例:srcjdbc.Set="列名1,列名2" |
String | Call | 调用存储过程中使用 |
String | Join | 关联查询中使用 |
String | Return | 新增数据成功后指定返回的字段,如新增成功后返回id |
String | Ysql | 指定使用预sql名称 |
String[] | SqlPrame | 若使用预sql需要指定参数数组 |
Boolean | Cache | 是否对查询数据进行缓存。默认false |
int | DDL | 批量事务处理中用于指定sql类型。 SrcJdbc.INSERT;--插入 SrcJdbc.UPDATE;--修改 SrcJdbc.DELETE;--删除 SrcJdbc.SYSTEM;--系统语句 |
Map | Map | 用于绑定参数map对象 |
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; } |
实现注册新增(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; } |
实现用户密码修改(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; } |