说明

数据库操作,数据库操作助码支持两种,一种是使用实体,第二种是使用原生sql查询

使用实体方式

只要软件中建立了表实体,那么就自动会有实体的三层结构,主要使用 service,和 entity

需要导入相关包:

import com.zhumadev.startzhuma.iservice.IDemoSingleTableService;

import com.zhumadev.startzhuma.entity.DemoSingleTable;

注入service对象

@IServiceAutowired

private IDemoSingleTableService demoSingleTableService;

示例中试用到的方法

createData 插入实体对象

modifyData 更新实体对象

selectByIdWithFill 根据主键查询实体对象 查询外会填充实体关联信息

selectListKeyEqValue 根据字段名称和字段值查询数据列表

deleteData 根据主键删除实体对象,添加删除消息

更多方法参考 ZmServiceBase 服务(Service)的基类的说明

示例

  1. //实体操作测试
  2. public ZmHash TestEntity()
  3. {
  4. ZmHash log=new ZmHash();
  5. ZmReturnMsg msg=new ZmReturnMsg();
  6. DemoSingleTable data=new DemoSingleTable();
  7. data.TableName = "实体测试";
  8. data.TableNum = 5;
  9. //实体添加数据
  10. this.demoSingleTableService.createData(data,msg);
  11. int newAddId=data.TableId;
  12. log.Add("添加了一条数据,数据id为:",newAddId);
  13. //查询刚刚添加的数据
  14. DemoSingleTable selectdata=this.demoSingleTableService.selectByIdWithFill(newAddId,true,true);
  15. log.Add("查询刚刚添加的数据TableName",selectdata.TableName );
  16. //修改数据名称为 实体测试修改
  17. selectdata.TableName= "实体测试修改";
  18. this.demoSingleTableService.modifyData(selectdata,msg);
  19. //重新查询
  20. selectdata=this.demoSingleTableService.selectByIdWithFill(newAddId,true,true);
  21. log.Add("查询修改后的数据的数据TableName",selectdata.TableName );
  22. List list = this.demoSingleTableService.selectListKeyEqValue("TableId",newAddId);
  23. log.Add("删除前数据条数",list.GetCount());
  24. //删除刚刚添加的数据
  25. this.demoSingleTableService.deleteData(newAddId,msg);
  26. list = this.demoSingleTableService.selectListKeyEqValue("TableId",newAddId);
  27. log.Add("删除后数据条数",list.GetCount());
  28. return log;
  29. }

使用原生sql查询 弱类型方式

需要先找到数据库查询对象,在控制器、服务层、作业等等地方都可以通过下面语句找到数据库查询对象

BaseProvider curDb = base.GetCurDb();

示例中试用到的方法

InsertIntIdentityByParamList 根据sql参数列表插入数据并返回自增列id整型,sql参数名称就是列(col)名称

UpdateByConditions 根据参数列表更新符合条件列表的数据

SelectHashWhere 根据传入表数据和where条件生成并执行sql语句,并返回hash结构

SelectHashListWhere 根据传入表数据和where条件生成并执行sql语句,并返回hashlist结构

Delete 删除符合条件列表的数据

更多方法参考 BaseProvider说明

本方式可以通过可视化码流/微流的方式生成

示例

  1. //数据库弱类型操作测试
  2. public ZmHash TestDbProvide()
  3. {
  4. ZmHash log=new ZmHash();
  5. BaseProvider curDb = base.GetCurDb();
  6. ZmReturnMsg msg=new ZmReturnMsg();
  7. ZmHash data=new ZmHash();
  8. ZmSqlParamList editParamList=new ZmSqlParamList();
  9. editParamList.AddStringParam("table_name", "弱类型测试",50);
  10. editParamList.AddIntParam("table_num", 5);
  11. //弱类型添加数据
  12. int newAddId=curDb.InsertIntIdentityByParamList("demo_single_table",editParamList);
  13. log.Add("添加了一条数据,数据id为:",newAddId);
  14. //查询刚刚添加的数据
  15. ZmHash selectdata= curDb.SelectHashWhere("demo_single_table", " table_id="+newAddId, "*");
  16. log.Add("查询刚刚添加的数据TableName",selectdata.GetStringValue("table_name") );
  17. //修改数据名称为 实体测试修改
  18. ZmQueryConditionList queryConditions = new ZmQueryConditionList();
  19. queryConditions.Add("table_id", "Equal", newAddId, false);
  20. editParamList=new ZmSqlParamList();
  21. editParamList.AddStringParam("table_name", "弱类型测试修改",50);
  22. curDb.UpdateByConditions("demo_single_table", editParamList, queryConditions);
  23. //重新查询
  24. selectdata= curDb.SelectHashWhere("demo_single_table", " table_id="+newAddId, "*");
  25. log.Add("查询修改后的数据的数据TableName",selectdata.GetStringValue("table_name") );
  26. ZmHashList list = curDb.SelectHashListWhere("demo_single_table", " table_id="+newAddId, "*");
  27. log.Add("删除前数据条数",list.GetCount());
  28. //删除刚刚添加的数据
  29. curDb.Delete("demo_single_table",queryConditions);
  30. list = curDb.SelectHashListWhere("demo_single_table", " table_id="+newAddId, "*");
  31. log.Add("删除后数据条数",list.GetCount());
  32. return log;
  33. }

使用存储过程示例

  1. BaseProvider curDb = base.GetCurDb();
  2. if(curDb.isSupportProcedure()){
  3. //判断当前数据库提供者是否支持存储过程
  4. ZmSqlParamList paramlist = new ZmSqlParamList();
  5. paramlist.AddIntParam("id", 0);
  6. ZmSqlParam countParam = paramlist.AddIntParam("count", 2);
  7. //inout 参数的用法
  8. countParam.setInOutTypeInOut();
  9. ZmSqlParam ocParam = paramlist.AddIntParam("oc", 0);
  10. // out参数用法
  11. ocParam.setInOutTypeOut();
  12. //调用存储过程并返回ZmHashList
  13. ZmHashList hashlist = curDb.ExecProcHashListParams("my_test_proc", paramlist);
  14. //参数返回以后的类型转换
  15. int newCount = ZmUtil.toInt(countParam.getParamValue());
  16. int newoc =ZmUtil.toInt(ocParam.getParamValue());
  17. }
  18. else{
  19. //对于不支持存储过程的数据处理
  20. }

示例视频包含的内容

使用实体方式的操作数据库

使用数据库原生sql方式的操作