文档章节

nhmicro的dao层工具技术说明

杰睿宁
 杰睿宁
发布于 2017/11/13 15:09
字数 1804
阅读 10
收藏 0

MicroServiceTemplateSupport 1.1. 概述 MicroServiceTemplate负责与数据库交互是Dao层的轻量化封装,可同时支持mysql和oracle,特别是针对mysql特性进行优化封装,如分页查询性能优化、动态字段等等。 主要特点是: a, 简化了orm映射过程 不再需要定义实体类与数据库映射。而使用map作为输入和输出对象。 输入输出map中key与数据库中列名相同,因此不必考虑名称映射问题;输入输出map中的value都是string类型,因此不必考虑类型转换问题。 b, 提供常用no-sql方法 不必编写sql即可针对某表进行增删改查、分页、saveOrUpdate等操作,同时也提供直接执行复杂sql的功能接口。 c,封装了sql模板替换方法,方便复杂sql的管理与复用,功能上与mybatis类似。 d,针对mysql5.7+版本支持动态字段创建和增删改查功能。 e,底层使用jdbcTemplate,遇到特殊的MicroServiceTemplateSupport 未提供的功能时,可获取底层jdbcTemplate对象进行操作,确保功能的全面性。同样由于底层使用jdbcTemplate,因此支持spring事务管理机制。

注意: a,数据库表必须有id字段,字段类型可以是字符串型或数字类型。 b,输入输出参数中时间字符串按照”yyyy-MM-dd HH:mm:ss”格式填写。

1.2. 实例化 MicroServiceTemplateSupport.getInstance() //可以设置多个实例,不同实例标识名称不同,无参数默认为default MicroServiceTemplateSupport.getInstance(“default”) //可以支持mysql和oracle MicroServiceTemplateSupport.getInstance(“default”,”mysql”)

1.3. 分页查询 1.3.1. 根据分页信息和查询条件对表进行分页查询 public Map getInfoList4PageService(Map requestParamMap,String tableName,Map pageMap) 参数说明: requestParamMap,为查询条件key与数据表中列名一致。无条件为可传空。此参数后续不再累述。 TableName,为表名或使用join进行连接的中间表达式 PageMap,为分页信息,其中page为本次页数、rows为每页记录条数、sort为排序字段、order为排序方向、cusSort有值时可填写自定义排序sql;此参数结构后续不再累述。

1.3.2. 分页查询时可以设置自定义条件sql和返回字段sql public Map getInfoList4PageService(Map requestParamMap,String tableName,Map pageMap,String cusWhere,String cusSelect) 参数说明: cusWhere,为自定义条件sql;此参数后续不再累述。 cusSelect,为自定义返回字段sql;此参数后续不再累述。

1.3.3. 当自定义条件sql中带有?占位符时,可填写替换变量list public Map getInfoList4PageService(Map requestParamMap,String tableName,Map pageMap,String cusWhere,String cusSelect,List cusPlaceList) 参数说明: cusPlaceList,为替换变量列表

1.3.4. 直接填写复杂条件查询sql进行分页查询(查询sql中不必填写分页相关部分) public Map getInfoList4PageServiceBySql(String countSql,String sql,Map pageMap) 参数说明: countSql,复杂条件查询总记录数sql sql,复杂条件查询sql pageMap,分页信息map

1.3.5. 复杂条件查询sql中带有?占位符时,可填写参数list public Map getInfoList4PageServiceBySql(String countSql,List countPlaceList,String sql,List placeList,Map pageMap) 参数说明: countPlaceList,countSql中占位符替换参数list placeList,sql中占位符替换参数list

1.3.6. 针对mysql可以不填写记录总数查询sql,进行复杂条件查询sql分页 public Map getInfoList4PageServiceByMySql(String sql,List placeList,Map pageMap)

1.4. 查询单条记录 1.4.1. 根据表名排序信息等获取单条记录 public Map getSingleInfoService(Map requestParamMap,String tableName,Map sortMap,String cusWhere,String cusSelect,String modelName) 参数说明: modelName,为模型名称默认填空

1.4.2. 根据复杂查询sql获取单条记录 public Map getSingleInfoService(String sql,List placeList)

1.5. 查询全部不分页数据 1.5.1. 根据查询条件、表名称和排序信息,查询全部记录不分页。 public List getInfoListAllService(Map requestParamMap,String tableName,Map sortMap)

1.5.2. 查询全部记录时可以填写自定义查询条件和返回字段 public List getInfoListAllService(Map requestParamMap,String tableName,Map sortMap,String cusWhere,String cusSelect)

1.5.3. 自定义条件sql中带有?占位符是,可填写替换参数list public List getInfoListAllService(Map requestParamMap,String tableName,Map sortMap,String cusWhere,List placeList)

1.6. sql模板功能 MicroServiceTemplate中sqlTemplateService方法,用于做sql替换 替换的语法是使用velocity语法 例如: 判断是否为null #if(${param.p1}) 判断是否为"" #if(${param.p1}!='') 判断不为null且不为"" #if($!{param.p1}!='')

#sqlreplace是MicroServiceTemplate中的特殊标记,用来做?占位符替换,类似mybatis中的#替换符。使用#sqlreplace时会在返回的placeList中追加参数值。

例如以下的代码: Map paramMap=new HashMap(); paramMap.put("p1", "1"); paramMap.put("p2", "2"); paramMap.put("p3", "3"); paramMap.put("p4", "4"); paramMap.put("p5", "5"); String sql= "select * from aaa where 1=1"+ "#if(${param.p1})"+ " and c1='${param.p2}' "+ "#end"+ "#if(${param.p2})"+ " and c2= #sqlreplace(${param.p2}) "+ "#end"+ "#if(${param.p3})"+ " and c3 like '%${param.p3}%' "+ "#end" ;

	List placeList=new ArrayList();
	String retStr=sqlTemplateService(sql,paramMap,placeList);
	System.out.println(retStr);
	System.out.println(placeList);

返回如下的sql替换结果 retStr值为: select * from aaa where 1=1 and c1=1 true and c2=? true and c3 like '%3%' true placeList值为: [2]

1.7. 创建记录 1.7.1. 根据参数map自动对应数据库字段插入记录 public Integer createInfoService(Map requestParamMap,String tableName) 注:map中key与数据库字段不匹配时自动忽略。Update操作时也是如此后续不再累述。没有设置id字段时会自动生成id并设置到requestParamMap中。

1.7.2. 创建记录是可填写自定义插入列和插入值,多个列时使用逗号分隔。 public Integer createInfoService(Map requestParamMap,String tableName,String cusCol,String cusValue)

1.7.3. 给定id值并创建记录 public Integer createInfoService(String id,Map requestParamMap,String tableName)

1.8. 更新记录 1.8.1. 根据参数map中的主键id更新数据 public Integer updateInfoService(Map requestParamMap,String tableName) 参数: requestParamMap为更新数据 注:requestParamMap中需要含有key为id的数据作为查询条件 1.8.2. 可以自定义更新条件sql和更新sql public Integer updateInfoService(Map requestParamMap,String tableName,String cusCondition,String cusSetStr) 参数: cusCondition,为自定义更新条件sql cusSetStr,为自定义更新设置sql

1.8.3. 根据参数id更新数据 public Integer updateInfoByIdService(String id,String tableName,Map requestParamMap) 参数: Id为被更新数据的主键值 requestParamMap为更新数据

1.8.4. 根据sql直接更新 public Integer updateInfoServiceBySql(String sql,List placeList)

1.8.5. 根据业务逻辑id更新数据 public Integer updateInfoByBizIdService(String bizId,String tableName,String bizCol,Map requestParamMap) bizId,为业务逻辑id的值 bizCol,为数据库中作为业务逻辑id的列标识 requestParamMap,为更新数据。

1.9. 删除记录 1.9.1. 根据参数map中的主键id删除数据 public Integer delInfoService(Map requestParamMap,String tableName) 注:requestParamMap中需要含有key为id的数据作为筛选条件

1.9.2. 根据主键id删除数据 public Integer delInfoByIdService(String id,String tableName)

1.9.3. 根据业务逻辑id删除数据 public Integer delInfoByBizIdService(String bizId,String tableName,String bizCol) 参数: bizId,为业务逻辑id值 bizCol,为业务逻辑id对应的数据库字段标识

1.10. SaveOrUpdate 1.10.1. 根据id值自动判断是插入还是更新数据 public Integer saveOrUpdateInfoByIdService(String id,String tableName,Map requestParamMap)

1.10.2. 根据业务逻辑id值自动判断是插入还是更新数据 public Integer saveOrUpdateInfoByBizIdService(String bizId,String tableName,String bizCol,Map requestParamMap)

1.11. 批量执行 1.11.1. 批量执行不同sql Public int[] batchUpdateInfoServiceBySql(String[] sql)

1.11.2. 批量执行相同sql但替换值不同 Public int[] batchUpdateInfoServiceBySql(String sql,List<Object[]> paramList)

© 著作权归作者所有

杰睿宁

杰睿宁

粉丝 9
博文 21
码字总数 15442
作品 10
东城
私信 提问
脚本化微服务开源框架 - NHMicro

MVC 框架的缺点: 系统按照Controller、Service、Dao层次划分,虽然在建设初期技术结构清晰。但每个业务逻辑代码都分散到不同代码框,业务结构不直观,不利于后期业务重构。 业务代码与MVC技...

杰睿宁
2017/06/23
3K
5
NHMicro 1.1.7 发布,支持 MVC 各层代码热部署

NHMicro 1.1.7 已发布,该版本添加了 micro-mvc 模块。 micro-mvc框架,借助 nhmicro 框架和 groovy 技术使所有的 controller、servicebean、dao 和 sql 脚本都支持动态热部署和调试。 详见:...

杰睿宁
2018/01/12
922
4
NHMicro 添加互金产品与账户功能模板

NHMicro 新版发布,更新内容如下: NHMicro 添加 p2p 互联网金融理财功能模板,包括理财产品查询、账户管理等相关后台和页面。 添加面向互联网用户的定期理财产品列表页面和后台管理功能 点击...

杰睿宁
2017/07/26
835
1
NHMicro 添加贷款进件管理与合同模板管理功能

nhmicro添加进件管理功能 提交贷款进件、查看修改进件信息、上传附件、提交审批。 进件列表中点击添加,打开贷款进件申请录入页面 进件列表页面中可查看已录入进件记录 点击启动审批,提交至...

杰睿宁
2017/07/19
777
0
NHMicro —— 脚本化微服务开源框架

脚本化微服务 (NHMicro 开源框架) 实现 MVC 反模式,实现技术栈中的虚拟机...

达尔文
2017/06/25
35
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
51分钟前
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
8
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
11
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
10
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部