MicroServiceTemplate负责与数据库交互是Dao层的轻量化封装,可同时支持mysql和oracle,特别是针对mysql特性进行优化封装,如分页查询性能优化、动态字段等等。
主要特点是:
1, 简化了orm映射过程
不再需要定义实体类与数据库映射。而使用map作为输入和输出对象。
输入输出map中key与数据库中列名相同,因此不必考虑名称映射问题;输入输出map中的value都是string类型,因此不必考虑类型转换问题。
2, 提供常用no-sql方法
不必编写sql即可针对某表进行增删改查、分页、saveOrUpdate等操作,同时也提供直接执行复杂sql的功能接口。
3,封装了sql模板替换方法,方便复杂sql的管理与复用,功能上与mybatis类似。
4,针对mysql5.7+版本支持动态字段创建和增删改查功能。
5,底层使用jdbcTemplate,遇到特殊的MicroServiceTemplateSupport
未提供的功能时,可获取底层jdbcTemplate对象进行操作,确保功能的全面性。同样由于底层使用jdbcTemplate,因此支持spring事务管理机制。
注意:
1,数据库表必须有id字段,字段类型可以是字符串型或数字类型。
2,输入输出参数中时间字符串按照”yyyy-MM-dd HH:mm:ss”格式填写。
MicroServiceTemplateSupport.getInstance()
//可以设置多个实例,不同实例标识名称不同,无参数默认为default
MicroServiceTemplateSupport.getInstance(“default”)
//可以支持mysql和oracle
MicroServiceTemplateSupport.getInstance(“default”,”mysql”)
public Map getInfoList4PageService(MaprequestParamMap,String tableName,Map pageMap)
参数说明:
requestParamMap,为查询条件key与数据表中列名一致。无条件为可传空。此参数后续不再累述。
TableName,为表名或使用join进行连接的中间表达式
PageMap,为分页信息,其中page为本次页数、rows为每页记录条数、sort为排序字段、order为排序方向、cusSort有值时可填写自定义排序sql;此参数结构后续不再累述。
public Map getInfoList4PageService(Map requestParamMap,String tableName,MappageMap,String cusWhere,String cusSelect)
参数说明:
cusWhere,为自定义条件sql;此参数后续不再累述。
cusSelect,为自定义返回字段sql;此参数后续不再累述。
public Map getInfoList4PageService(Map requestParamMap,String tableName,MappageMap,String cusWhere,String cusSelect,List cusPlaceList)
参数说明:
cusPlaceList,为替换变量列表
public MapgetInfoList4PageServiceBySql(String countSql,String sql,Map pageMap)
参数说明:
countSql,复杂条件查询总记录数sql
sql,复杂条件查询sql
pageMap,分页信息map
public MapgetInfoList4PageServiceBySql(String countSql,List countPlaceList,String sql,ListplaceList,Map pageMap)
参数说明:
countPlaceList,countSql中占位符替换参数list
placeList,sql中占位符替换参数list
public Map getInfoList4PageServiceByMySql(Stringsql,List placeList,Map pageMap)
public Map getSingleInfoService(MaprequestParamMap,String tableName,Map sortMap,String cusWhere,StringcusSelect,String modelName)
参数说明:
modelName,为模型名称默认填空
public Map getSingleInfoService(Stringsql,List placeList)
public List getInfoListAllService(MaprequestParamMap,String tableName,Map sortMap)
public List getInfoListAllService(MaprequestParamMap,String tableName,Map sortMap,String cusWhere,String cusSelect)
public List getInfoListAllService(MaprequestParamMap,String tableName,Map sortMap,String cusWhere,List placeList)
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=1and c1=1 true and c2=? true and c3 like '%3%' true
placeList值为:
[2]
public Integer createInfoService(MaprequestParamMap,String tableName)
注:map中key与数据库字段不匹配时自动忽略。Update操作时也是如此后续不再累述。没有设置id字段时会自动生成id并设置到requestParamMap中。
public Integer createInfoService(MaprequestParamMap,String tableName,String cusCol,String cusValue)
public Integer createInfoService(Stringid,Map requestParamMap,String tableName)
public Integer updateInfoService(MaprequestParamMap,String tableName)
参数:
requestParamMap为更新数据
注:requestParamMap中需要含有key为id的数据作为查询条件
public Integer updateInfoService(MaprequestParamMap,String tableName,String cusCondition,String cusSetStr)
参数:
cusCondition,为自定义更新条件sql
cusSetStr,为自定义更新设置sql
public Integer updateInfoByIdService(Stringid,String tableName,Map requestParamMap)
参数:
Id为被更新数据的主键值
requestParamMap为更新数据
public Integer updateInfoServiceBySql(Stringsql,List placeList)
public IntegerupdateInfoByBizIdService(String bizId,String tableName,String bizCol,MaprequestParamMap)
bizId,为业务逻辑id的值
bizCol,为数据库中作为业务逻辑id的列标识
requestParamMap,为更新数据。
public Integer delInfoService(MaprequestParamMap,String tableName)
注:requestParamMap中需要含有key为id的数据作为筛选条件
public Integer delInfoByIdService(Stringid,String tableName)
public Integer delInfoByBizIdService(StringbizId,String tableName,String bizCol)
参数:
bizId,为业务逻辑id值
bizCol,为业务逻辑id对应的数据库字段标识
public IntegersaveOrUpdateInfoByIdService(String id,String tableName,Map requestParamMap)
public IntegersaveOrUpdateInfoByBizIdService(String bizId,String tableName,String bizCol,MaprequestParamMap)
Public int[] batchUpdateInfoServiceBySql(String[]sql)
Public int[] batchUpdateInfoServiceBySql(Stringsql,List<Object[]> paramList)